I'm trying to get my libraries to deploy via FTP. I have it partly
working, but there's a problem.
My multi-module project's build.gradle:
description = "Collection of add-ons for Tapestry 5"
tapestryVersion = "5.2.4"
subprojects {
apply plugin: 'java'
apply plugin: 'groovy' // mostly for testing
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'project-report'
sourceCompatibility = '1.5'
targetCompatibility = '1.5'
version = '1.1-SNAPSHOT'
group = 'com.howardlewisship'
repositories {
mavenCentral()
// All things JBoss/Javassist/Hibernate
mavenRepo urls:
"https://repository.jboss.org/nexus/content/repositories/releases/"
// For the Kaptcha library
mavenRepo urls: "http://howardlewisship.com/repository/"
}
configurations {
deployerJars
}
dependencies {
compile "org.apache.tapestry:tapestry-core:$tapestryVersion"
testCompile "org.apache.tapestry:tapestry-test:$tapestryVersion"
testCompile "org.easymock:easymock:3.0"
groovy "org.codehaus.groovy:groovy-all:1.7.4"
deployerJars "org.apache.maven.wagon:wagon-ftp:1.0-beta-2"
}
test {
useTestNG()
options.suites("src/test/conf/testng.xml")
}
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
}
uploadArchives {
repositories.mavenDeployer {
configuration = configurations.deployerJars
// settings.xml must contain <server> entry for
howardlewisship.com with username and password
snapshotRepository(id: 'howardlewisship.com', url:
"ftp://howardlewisship.com/snapshot-repository") {
authentication(userName: '[email protected]',
password: 'TOPSECRET')
}
}
}
}
This works ... but notice that I have my userName and password in the
authentication. This shouldn't be necessary. I have a
~/.m2/settings.xml:
<?xml version="1.0"?>
<settings>
<servers>
<server>
<id>howardlewisship.com</id>
<username>[email protected]</username>
<password>TOPSECRET</password>
</server>
</servers>
</settings>
If I omit the authentication() element, or omit the password, or set
the password to blank, I get:
16:16:13.316 [DEBUG]
[org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:null]
Maven Ant Tasks version: 2.1.1
16:16:13.771 [DEBUG]
[org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:null]
Loading Maven settings file:
/var/folders/9h/9hzVZeGsGtSsTZH5Eejb0U+++TI/-Tmp-/gradle_empty_settings7294710492673423739.xml
16:16:13.885 [DEBUG]
[org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:null]
Loading Maven settings file: /Users/hlship/.m2/settings.xml
16:16:13.928 [INFO]
[org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:null]
Deploying to ftp://howardlewisship.com/snapshot-repository
16:16:13.934 [INFO] [system.out] [INFO] Retrieving previous build
number from howardlewisship.com
16:16:17.452 [DEBUG] [org.gradle.api.internal.tasks.SkipTaskExecuter]
Finished executing task ':tapx-datefield:uploadArchives'
16:16:17.464 [ERROR] [org.gradle.BuildExceptionReporter]
16:16:17.465 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE:
Build failed with an exception.
16:16:17.466 [ERROR] [org.gradle.BuildExceptionReporter]
16:16:17.466 [ERROR] [org.gradle.BuildExceptionReporter] * Where:
16:16:17.466 [ERROR] [org.gradle.BuildExceptionReporter] Build file
'/Users/hlship/workspaces/tapestry/tapx/tapx-datefield/build.gradle'
16:16:17.466 [ERROR] [org.gradle.BuildExceptionReporter]
16:16:17.466 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
16:16:17.467 [ERROR] [org.gradle.BuildExceptionReporter] Execution
failed for task ':tapx-datefield:uploadArchives'.
16:16:17.468 [ERROR] [org.gradle.BuildExceptionReporter] Cause: Could
not publish configurations [configuration ':tapx-datefield:archives'].
16:16:17.468 [ERROR] [org.gradle.BuildExceptionReporter]
16:16:17.469 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
16:16:17.469 [ERROR] [org.gradle.BuildExceptionReporter]
org.gradle.api.tasks.LocationAwareTaskExecutionException: Build file
'/Users/hlship/workspaces/tapestry/tapx/tapx-datefield/build.gradle'
16:16:17.470 [ERROR] [org.gradle.BuildExceptionReporter] Execution
failed for task ':tapx-datefield:uploadArchives'.
16:16:17.470 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:66)
16:16:17.470 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:43)
16:16:17.470 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:32)
16:16:17.470 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute(ExecutionShortCircuitTaskExecuter.java:50)
16:16:17.471 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57)
16:16:17.471 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35)
16:16:17.471 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:32)
16:16:17.471 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:231)
16:16:17.471 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167)
16:16:17.472 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160)
16:16:17.472 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78)
16:16:17.472 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:113)
16:16:17.472 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
16:16:17.473 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:153)
16:16:17.473 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:107)
16:16:17.473 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:75)
16:16:17.473 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:41)
16:16:17.473 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:27)
16:16:17.474 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:209)
16:16:17.474 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:193)
16:16:17.474 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.launcher.Main.execute(Main.java:55)
16:16:17.474 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.launcher.Main.main(Main.java:40)
16:16:17.475 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:46)
16:16:17.475 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:28)
16:16:17.475 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.launcher.GradleMain.main(GradleMain.java:24)
16:16:17.475 [ERROR] [org.gradle.BuildExceptionReporter] Caused by:
org.gradle.api.GradleException: Could not publish configurations
[configuration ':tapx-datefield:archives'].
16:16:17.476 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingIvyService.publish(ErrorHandlingIvyService.java:44)
16:16:17.476 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.publish(DefaultConfiguration.java:211)
16:16:17.476 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.tasks.Upload.upload(Upload.java:56)
16:16:17.476 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:158)
16:16:17.477 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:93)
16:16:17.477 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.tasks.Upload_Decorated.invokeMethod(Unknown Source)
16:16:17.477 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.util.ReflectionUtil.invoke(ReflectionUtil.groovy:23)
16:16:17.477 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$2.execute(AnnotationProcessingTaskFactory.java:131)
16:16:17.478 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$2.execute(AnnotationProcessingTaskFactory.java:130)
16:16:17.478 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:58)
16:16:17.478 [ERROR] [org.gradle.BuildExceptionReporter] ... 24 more
16:16:17.478 [ERROR] [org.gradle.BuildExceptionReporter] Caused by:
java.lang.NullPointerException
16:16:17.478 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.wagon.providers.ftp.FtpWagon.openConnection(FtpWagon.java:130)
16:16:17.479 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.wagon.AbstractWagon.connect(AbstractWagon.java:207)
16:16:17.479 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.manager.DefaultWagonManager.getRemoteFile(DefaultWagonManager.java:494)
16:16:17.479 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.manager.DefaultWagonManager.getArtifactMetadataFromDeploymentRepository(DefaultWagonManager.java:452)
16:16:17.479 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.repository.metadata.DefaultRepositoryMetadataManager.getArtifactMetadataFromDeploymentRepository(DefaultRepositoryMetadataManager.java:379)
16:16:17.480 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.repository.metadata.DefaultRepositoryMetadataManager.resolveAlways(DefaultRepositoryMetadataManager.java:347)
16:16:17.480 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.transform.SnapshotTransformation.resolveLatestSnapshotBuildNumber(SnapshotTransformation.java:161)
16:16:17.480 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.transform.SnapshotTransformation.transformForDeployment(SnapshotTransformation.java:100)
16:16:17.480 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.transform.DefaultArtifactTransformationManager.transformForDeployment(DefaultArtifactTransformationManager.java:74)
16:16:17.481 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:86)
16:16:17.481 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.ant.DeployTask.doExecute(DeployTask.java:125)
16:16:17.481 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.artifacts.publish.maven.deploy.CustomDeployTask.doExecute(CustomDeployTask.java:42)
16:16:17.481 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.maven.artifact.ant.AbstractArtifactTask.execute(AbstractArtifactTask.java:718)
16:16:17.482 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.artifacts.publish.maven.deploy.AbstractMavenResolver.execute(AbstractMavenResolver.java:189)
16:16:17.482 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.artifacts.publish.maven.deploy.AbstractMavenResolver.commitPublishTransaction(AbstractMavenResolver.java:180)
16:16:17.482 [ERROR] [org.gradle.BuildExceptionReporter] at
org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:262)
16:16:17.482 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.artifacts.ivyservice.DefaultIvyDependencyPublisher.publish(DefaultIvyDependencyPublisher.java:54)
16:16:17.482 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.artifacts.ivyservice.DefaultIvyService.publish(DefaultIvyService.java:144)
16:16:17.483 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.artifacts.ivyservice.ShortcircuitEmptyConfigsIvyService.publish(ShortcircuitEmptyConfigsIvyService.java:61)
16:16:17.483 [ERROR] [org.gradle.BuildExceptionReporter] at
org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingIvyService.publish(ErrorHandlingIvyService.java:42)
16:16:17.483 [ERROR] [org.gradle.BuildExceptionReporter] ... 33 more
16:16:17.483 [ERROR] [org.gradle.BuildExceptionReporter]
16:16:17.484 [LIFECYCLE] [org.gradle.BuildResultLogger]
16:16:17.484 [LIFECYCLE] [org.gradle.BuildResultLogger] BUILD FAILED
16:16:17.484 [LIFECYCLE] [org.gradle.BuildResultLogger]
16:16:17.484 [LIFECYCLE] [org.gradle.BuildResultLogger] Total time: 11.268 secs
Which appears to be this:
http://jira.codehaus.org/browse/WAGON-145
... indicating that the userName and/or password are null.
Meanwhile, I have a separate Ant build.xml that is used to populate
the same Maven repository (actually, howardlewisship.com/repository,
not howardlewisship.com/snapshot-repository). This is for a module
that is not built with Maven (a kpatcha library) that I want to be
downloadable using standard Maven.
Anyway, this build.xml works:
<?xml version="1.0"?>
<project xmlns:mvn="urn:maven-artifact-ant" default="deploy-libs">
<macrodef name="deploy">
<attribute name="name"/>
<sequential>
<mvn:deploy file="lib-import/@{name}.jar">
<remoteRepository id="howardlewisship.com"
url="ftp://howardlewisship.com/repository"/>
<pom file="lib-import/@{name}.pom"/>
<attach file="lib-import/@{name}-sources.jar" classifier="sources"/>
</mvn:deploy>
</sequential>
</macrodef>
<target name="-setup-maven">
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="urn:maven-artifact-ant"/>
<mvn:install-provider artifactId="wagon-ftp" version="1.0-beta-2"/>
</target>
<target name="deploy-libs" depends="-setup-maven"
description="Deploys libraries to Maven repository.">
<deploy name="kaptcha-2.3"/>
</target>
</project>
Notice that <remoteRepository> specifies and id but does not have any
authentication information. The username and password are coming from
settings.xml.
$ gradle -v
------------------------------------------------------------
Gradle 0.9.1
------------------------------------------------------------
Gradle build time: Sunday, 2 January 2011 11:40:57 AM EST
Groovy: 1.7.6
Ant: Apache Ant version 1.8.1 compiled on April 30 2010
Ivy: 2.2.0
JVM: 1.6.0_22 (Apple Inc. 17.1-b03-307)
OS: Mac OS X 10.6.6 x86_64
.... so, is this a known bug and is there any kind of workaround where
I don't have to leave my passwords visible?
--
Howard M. Lewis Ship
Creator of Apache Tapestry
The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!
(971) 678-5210
http://howardlewisship.com
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email