Как сказать 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
задача.