Как сказать gradle для создания и загрузки архивов зависимых проектов в локальный maven

У меня проблема с несколькими проектами, о которой в документации Gradle нет никакой информации (и она также не может быть найдена в stackru). Любая помощь / руководство будет принята с благодарностью.

Вот мои макеты проекта:

  • Проект LeftArm: создает файл JAR
  • проект RightArm: создает файл jar
  • Проект AllArms: зависит от проектов LeftArm и RightArm и создает war файл

Когда я запускаю 'gradle build uploadArchives' в проекте AllArms, он создает проекты LeftArm и RightArm, но не загружает jar файлы (созданные проектами LeftArm и RightArm) для локального репозитория Maven.

Вот мои build.gradle файлы:

project LeftArm:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven'

ext.artifactId = 'LeftArm'
archivesBaseName = ext.artifactId // sets filename of warfile/jarfile output
group = 'mygroup'
version = '1.0'

buildscript 
{
    repositories 
    {
    mavenLocal()
    }
}

jar 
{
    from(sourceSets['main'].allJava)
}

dependencies 
{
    compile group: 'javax.validation', name:'validation-api', version:'1.0.0.GA'
    compile group: 'javax.validation', name:'validation-api-sources', version:'1.0.0.GA'
}

def localRepoURL = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath

// NOTE: this project will publish to the local Maven repo.
uploadArchives 
{
    repositories 
    {
    mavenDeployer 
    {
        repository(url: localRepoURL)
        addFilter('jar') 
        { 
            artifact, file -> artifact.ext == 'jar'
        }
    }
    }
}

...

project RightArm:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven'

ext.artifactId = 'RightArm'
archivesBaseName = ext.artifactId // sets filename of warfile/jarfile output
group = 'mygroup'
version = '1.0'

buildscript 
{
    repositories 
    {
    mavenLocal()
    }
}

jar 
{
    from(sourceSets['main'].allJava)
}

dependencies 
{
    compile group: 'javax.validation', name:'validation-api', version:'1.0.0.GA'
    compile group: 'javax.validation', name:'validation-api-sources', version:'1.0.0.GA'
}

def localRepoURL = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath

// NOTE: this project will publish to the local Maven repo.
uploadArchives 
{
    repositories 
    {
    mavenDeployer 
    {
        repository(url: localRepoURL)
        addFilter('jar') 
        { 
            artifact, file -> artifact.ext == 'jar'
        }
    }
    }
}

...

project AllArms:
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'maven'
apply plugin: 'idea'
apply plugin: 'eclipse'

ext.artifactId = 'AllArms'
ext.sourceCompatibility = 1.6
archivesBaseName = artifactId // sets filename of warfile/jarfile output
group = 'mygroup'
version = '1.0'

def gwtVersion = '2.2.0'

repositories
{
    mavenLocal()
    mavenCentral()
}

dependencies
{
    compile project(':LeftArm') 
    compile project(':RightArm') 
    // ###   NOTE:  this is where the build breaks b/c uploadArchives task is not executed  ###
    compile group: group, name: 'LeftArm', version:version
    compile group: group, name: 'RightArm', version:version
    providedCompile group: 'javax.validation', name:'validation-api', version:'1.0.0.GA'
    providedCompile group: 'javax.validation', name:'validation-api-sources', version:'1.0.0.GA'
    providedCompile group: 'com.google.gwt', name:'gwt-user', version:gwtVersion
    providedCompile group: 'com.google.gwt', name:'gwt-dev', version:gwtVersion
    providedCompile group: 'org.gwtext', name:'gwtext', version:'2.0.4'
}

task compileGwt (dependsOn: classes, type: JavaExec) {
    project.ext 
    {
    gwtDir = "${project.buildDir}/gwt"
    extraDir = "${project.buildDir}/extra"
    gwtModuleName = 'MyModuleName'
    }
    inputs.source sourceSets.main.java.srcDirs
    inputs.dir sourceSets.main.output.resourcesDir
    outputs.dir project.gwtDir

    // Workaround for incremental build (GRADLE-1483)
    outputs.upToDateSpec = new org.gradle.api.specs.AndSpec()

    doFirst
    {
    file(project.gwtDir).mkdirs()
    }

    main = 'com.google.gwt.dev.Compiler'

    classpath
    {
    [
        sourceSets.main.java.srcDirs,           // Java source
        sourceSets.main.output.resourcesDir,    // Generated resources
        sourceSets.main.output.classesDir,      // Generated classes
        sourceSets.main.compileClasspath,       // Deps
    ]
    }

    args =
    [
    project.gwtModuleName, // Your GWT module
    '-war', project.gwtDir,
    '-logLevel', 'INFO',
    '-localWorkers', '2',
    '-compileReport',
    '-extra', project.extraDir,
    ]

    maxHeapSize = '256M'
}

buildscript 
{
    repositories 
    {
    mavenLocal()
    }
}

sourceSets 
{
    main 
    {
    resources 
    {           srcDir('src/main/java').include('**/client/**').include('**/public/**').include('**/*.gwt.xml')
    }
    }
}

war.dependsOn(compileGwt)
war 
{
    def gwtOutputTree = project.fileTree(project.gwtDir)
    from(gwtOutputTree)
    baseName = artifactId
}

task classesJar(type: Jar) {
    dependsOn(classes)
    baseName = artifactId
}

artifacts 
{
    archives war, classesJar
}

def localRepoURL = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath

// NOTE: this project will publish to the local Maven repo.
uploadArchives 
{
    repositories 
    {
    mavenDeployer 
    {
        repository(url: localRepoURL)

        addFilter('war') 
        { 
            artifact, file -> artifact.ext == 'war'
        }
    }
    }
}

1 ответ

uploadArchives не предназначен для установки в локальный репозиторий Maven. Вместо этого используйте install задача.

Другие вопросы по тегам