Hallo, I also have the same problem. I have some subprojects. For every subproject I want to upload an artifact file. That is no problem. But I also want to upload an jar artifact. For that I have following part :
artifacts {
archives file('build/recordmanagement-repository-'+version+'.amp'), file('build/recordmanagement-defaultRepositoryPlugin-'+version+'.amp'),
file('build/recordmanagement-share-'+version+'.amp'), file('build/recordmanagement-defaultSharePlugin-'+version+'.amp'), file('build/libs/recordmanagement-repository-'+version+'.jar')
}
When I remove following part from above code:
file('build/recordmanagement-defaultSharePlugin-'+version+'.amp'), file('build/libs/recordmanagement-repository-'+version+'.jar')
it works. But when I add it, I get following error:
* Exception is:
[exec] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':RecordManagement Repository:uploadArchives'.
...
Caused by: org.gradle.api.artifacts.PublishException: Could not publish configuration ':RecordManagement Repository:archives'.
..
Caused by: org.gradle.api.InvalidUserDataException: A POM can not have multiple main artifacts. Already have MavenArtifact recordmanagement-repository:war:war:null, trying to add MavenArtifact recordmanagement-repository:jar:jar:null
That is the important part of the build script:
allprojects {
ext.groupId='com.westernacher.recordmanagement'
ext.version='1.0.0-RELEASE'
group='com.westernacher.recordmanagement'
version='1.0.0-RELEASE'
repositories {
maven {
credentials {
username artifactoryRepoUsername
password artifactoryRepoPassword
}
url 'http://xyz'
}
maven {
credentials {
username artifactoryRepoUsername
password artifactoryRepoPassword
}
url 'http://xyz'
}
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'maven'
// enable generation of jar, for war files and puts them into war
war {
classpath = jar.outputs.files + configurations.runtime - configurations.providedRuntime
classpath = projectDir.path + "/src/main/profiles/${rootProject.ext.profile}/"
}
jar {
metaInf {
from files('src/main/META-INF')
}
}
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
compileJava.options.debugOptions.debugLevel = 'source,lines,vars'
artifacts {
archives file('build/recordmanagement-repository-'+version+'.amp'), file('build/recordmanagement-defaultRepositoryPlugin-'+version+'.amp'),
file('build/recordmanagement-share-'+version+'.amp'), file('build/recordmanagement-defaultSharePlugin-'+version+'.amp'), file('build/libs/recordmanagement-repository-'+version+'.jar')
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://xyz") {
authentication(userName: artifactoryRepoUsername, password: artifactoryRepoPassword)
addFilter('recordmanagement-repository') {artifact, file ->
artifact.name == 'recordmanagement-repository'
}
MavenPom pomDefaultRepositoryPlugin = addFilter('recordmanagement-defaultRepositoryPlugin') {artifact, file ->
artifact.name == 'recordmanagement-defaultRepositoryPlugin'
}
// fix project compile dependency (should not be needed starting from 1.0, see http://issues.gradle.org/browse/GRADLE-443)
pomDefaultRepositoryPlugin.whenConfigured {pom ->
pom.dependencies.find { dep -> dep.artifactId == 'RecordManagement Repository' }.artifactId = 'recordmanagement-repository'
}
addFilter('recordmanagement-share') {artifact, file ->
artifact.name == 'recordmanagement-share'
}
addFilter('recordmanagement-defaultSharePlugin') {artifact, file ->
artifact.name == 'recordmanagement-defaultSharePlugin'
}
}
snapshotRepository(url: 'http://xyz'){
authentication(userName: artifactoryRepoUsername, password: artifactoryRepoPassword)
addFilter('recordmanagement-repository') {artifact, file ->
artifact.name == 'recordmanagement-repository'
}
MavenPom pomDefaultRepositoryPlugin = addFilter('recordmanagement-defaultRepositoryPlugin') {artifact, file ->
artifact.name == 'recordmanagement-defaultRepositoryPlugin'
}
// fix project compile dependency (should not be needed starting from 1.0, see http://issues.gradle.org/browse/GRADLE-443)
pomDefaultRepositoryPlugin.whenConfigured {pom ->
pom.dependencies.find { dep -> dep.artifactId == 'RecordManagement Repository' }.artifactId = 'recordmanagement-repository'
}
addFilter('recordmanagement-share') {artifact, file ->
artifact.name == 'recordmanagement-share'
}
addFilter('recordmanagement-defaultSharePlugin') {artifact, file ->
artifact.name == 'recordmanagement-defaultSharePlugin'
}
}
}
}
}
}
Where is the problem? What do I have to change?
Thanks for a reply!
Shalom Amin Zamani