On Mar 9, 2010, at 7:43 AM, Hans Dockter wrote:
>
>
> On Mon, Mar 8, 2010 at 9:14 PM, Jesse Eichar <[email protected]>
> wrote:
>>
>> On Mon, Mar 8, 2010 at 5:36 PM, Jesse Eichar <[email protected]>
>> wrote:
>> Hi,
>>
>> I have customized my build so that there are 3 artifacts. I have customized
>> uploadArtifacts so all 3 artifacts are uploaded to a remote maven
>> repository. Now I want to customize install so that they are installed in
>> the local repository.
>>
>> After applying the Maven plugin there is an install task. Executing this
>> install task will store by default all artifacts of the archives
>> configuration to your local Maven repo. By default the default jar is part
>> of the archives configuration. You can add additional jars like:
>>
>> artifacts {
>> archives jar1, jar2
>> }
>>
>
> This is what I tried at first because that is how I expected it to work. I
> am using 0.8 so perhaps there is a bug related to what I am doing. I am
> glad to know that is how it is expected to work. I am sure I can figure it
> out now that I know that is the correct method.
>
> Do those jars belong to the same pom (i.e. just differ in their classifier)?
>
> You said that the remote upload works. In that case the install should work
> as well.
>
> What exception do you get with the above approach?
>
> - Hans
The artifacts require different poms and have different ids: print-lib,
print-servlet, print-standalone. I was migrating the project from a
multiproject maven build system where there were 4 projects 3 of which only had
poms and not code or resources. So I merged them into one gradle project.
The uploadArtifacts works great because I use filters:
addFilter('lib') { artifact, file ->
artifact.name.contains 'print-lib'
}
addFilter('standalone') { artifact, file ->
artifact.name.contains 'print-standalone'
}
addFilter('war') { artifact, file ->
artifact.name.contains 'print-servlet'
}
It sounds to me like the bug that Adam is talking about. I will try the 0.9
snapshot and see if that works out. If so then I can wait for the 0.9 release.
The uploadArtifacts is the important task for us.
I do not seem to be able to build with 0.9 for some reason. There is a
StackOverflow when resolving transitive dependencies.
A problem occurred evaluating root project 'print'.
Cause: Could not resolve all dependencies for configuration ':compile'.
Cause: java.lang.StackOverflowError (no error message)
* Try:
Run with -S option to get the full (very verbose) stacktrace.
* Exception is:
org.gradle.api.LocationAwareGradleScriptException: Build file
'/Volumes/Box/Projects/mapfish/src/print/build.gradle' line: 54
A problem occurred evaluating root project 'print'.
at
org.gradle.groovy.scripts.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:52)
at
org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.use(DefaultScriptPluginFactory.java:121)
at
org.gradle.configuration.BuildScriptProcessor.evaluate(BuildScriptProcessor.java:38)
at
org.gradle.configuration.DefaultProjectEvaluator.evaluate(DefaultProjectEvaluator.java:38)
at
org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:495)
at
org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:65)
at
org.gradle.api.internal.project.ProjectInternal$evaluate.call(Unknown Source)
at
org.gradle.configuration.BuildConfigurer$_closure1.doCall(BuildConfigurer.groovy:41)
at $Proxy4.execute(Unknown Source)
at
org.gradle.api.internal.project.AbstractProject.configure(AbstractProject.java:471)
at
org.gradle.api.internal.project.AbstractProject.allprojects(AbstractProject.java:466)
at org.gradle.api.Project$allprojects.call(Unknown Source)
at
org.gradle.configuration.BuildConfigurer.process(BuildConfigurer.groovy:48)
at org.gradle.GradleLauncher.doBuildStages(GradleLauncher.java:181)
at org.gradle.GradleLauncher.doBuild(GradleLauncher.java:133)
at org.gradle.GradleLauncher.run(GradleLauncher.java:103)
at org.gradle.launcher.Main.execute(Main.java:93)
at org.gradle.launcher.Main.main(Main.java:42)
at org.gradle.launcher.GradleMain.main(GradleMain.java:54)
Caused by: org.gradle.api.artifacts.ResolveException: Could not resolve all
dependencies for configuration ':compile'.
at
org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingIvyService.wrapException(ErrorHandlingIvyService.java:63)
at
org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingIvyService.access$000(ErrorHandlingIvyService.java:28)
at
org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingIvyService$ErrorHandlingResolvedConfiguration.getFiles(ErrorHandlingIvyService.java:92)
For your interest here is the error using 0.8:
* Exception is:
org.gradle.api.GradleScriptException: Build file
'/Volumes/Box/Projects/mapfish/src/print/build.gradle'
Execution failed for task ':install'.
at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:232)
at
org.gradle.execution.DefaultTaskExecuter.executeTask(DefaultTaskExecuter.java:165)
at
org.gradle.execution.DefaultTaskExecuter.doExecute(DefaultTaskExecuter.java:156)
at
org.gradle.execution.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:74)
at
org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:174)
at
org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
at org.gradle.GradleLauncher.doBuildStages(GradleLauncher.java:165)
at org.gradle.GradleLauncher.doBuild(GradleLauncher.java:124)
at org.gradle.GradleLauncher.run(GradleLauncher.java:95)
at org.gradle.Main.execute(Main.java:100)
at org.gradle.Main.main(Main.java:43)
at org.gradle.BootstrapMain.main(BootstrapMain.java:50)
Caused by: org.gradle.api.GradleException: Could not publish configurations
[configuration 'archives'].
at
org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingIvyService.publish(ErrorHandlingIvyService.java:44)
at
org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.publish(DefaultConfiguration.java:194)
at org.gradle.api.tasks.Upload.upload(Upload.java:57)
at org.gradle.api.DefaultTask.invokeMethod(DefaultTask.groovy)
at org.gradle.util.ReflectionUtil.invoke(ReflectionUtil.groovy:23)
at
org.gradle.api.internal.project.AnnotationProcessingTaskFactory$2.execute(AnnotationProcessingTaskFactory.java:125)
at
org.gradle.api.internal.project.AnnotationProcessingTaskFactory$2.execute(AnnotationProcessingTaskFactory.java:123)
at org.gradle.api.internal.AbstractTask.doExecute(AbstractTask.java:257)
at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:222)
... 11 common frames omitted
Caused by: org.gradle.api.InvalidUserDataException: There can be only one
artifact per pom. Artifact print-lib with file
/Volumes/Box/Projects/mapfish/src/print/build/libs/print-lib-1.2-SNAPSHOT.jar
can't be assigned to pom default
at
org.gradle.api.internal.artifacts.publish.maven.deploy.DefaultArtifactPomContainer.throwExceptionIfMultipleArtifactsPerPom(DefaultArtifactPomContainer.java:62)
at
org.gradle.api.internal.artifacts.publish.maven.deploy.DefaultArtifactPomContainer.addArtifact(DefaultArtifactPomContainer.java:54)
at
org.gradle.api.internal.artifacts.publish.maven.deploy.AbstractMavenResolver.publish(AbstractMavenResolver.java:158)
at
org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:282)
at
org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:261)
at
org.gradle.api.internal.artifacts.ivyservice.DefaultIvyDependencyPublisher.publish(DefaultIvyDependencyPublisher.java:62)