This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 7.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/7.0.x by this push: new e5ae7c6 Switch to Maven Resolver Ant tasks e5ae7c6 is described below commit e5ae7c616531c7b639ccc68b374d1c364a9b4daf Author: Mark Thomas <ma...@apache.org> AuthorDate: Fri May 29 10:48:54 2020 +0100 Switch to Maven Resolver Ant tasks --- .gitignore | 2 +- build.xml | 2 +- res/maven/mvn-pub.xml | 279 +++++++++++++++++++++++---------------- res/maven/mvn.properties.default | 20 ++- webapps/docs/changelog.xml | 5 + 5 files changed, 192 insertions(+), 116 deletions(-) diff --git a/.gitignore b/.gitignore index 08b1edc..aa1345f 100644 --- a/.gitignore +++ b/.gitignore @@ -36,7 +36,7 @@ mvn.properties *.asc *.jj *.tmp -maven-ant-tasks-*.jar +maven-resolver-ant-tasks-*.jar thumbs.db Thumbs.db bin/setenv.* diff --git a/build.xml b/build.xml index 67b8bcc..64da7e7 100644 --- a/build.xml +++ b/build.xml @@ -2282,7 +2282,7 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform. <filename name="**/*.asc" /> <filename name="**/*.tmp" /> <filename name="**/*.jj" /> - <filename name="**/maven-ant-tasks-*.jar" /> + <filename name="**/maven-resolver-ant-tasks-*.jar" /> <filename name="**/thumbs.db" /> <filename name="**/Thumbs.db" /> <filename name="*.launch"/> diff --git a/res/maven/mvn-pub.xml b/res/maven/mvn-pub.xml index 52a9eee..9fd938b 100644 --- a/res/maven/mvn-pub.xml +++ b/res/maven/mvn-pub.xml @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -16,24 +16,68 @@ limitations under the License. --> <project name="Tomcat 7.0 Maven Deployment" default="" basedir="." - xmlns:artifact="urn:maven-artifact-ant"> - <!-- - Built for using Maven Ant Tasks (version 2.1.0 is known to work) - --> + xmlns:resolver="antlib:org.apache.maven.resolver.ant" + xmlns:if="ant:if" + xmlns:unless="ant:unless"> <property file="${basedir}/mvn.properties"/> <property file="${basedir}/mvn.properties.default"/> <property name="local.repo" value="${user.home}/.m2/repository"/> <target name="init-maven"> - <typedef resource="org/apache/maven/artifact/ant/antlib.xml" - uri="urn:maven-artifact-ant"> + <antcall target="downloadfile"> + <param name="sourcefile" value="${maven-resolver-ant-tasks.loc}"/> + <param name="destfile" value="${maven-resolver-ant-tasks.jar}"/> + <param name="destdir" value="${maven-resolver-ant-tasks.home}"/> + </antcall> + + <taskdef resource="org/apache/maven/resolver/ant/antlib.xml" + uri="antlib:org.apache.maven.resolver.ant"> <classpath> - <pathelement location="${basedir}/maven-ant-tasks-2.1.0.jar" /> + <pathelement location="${maven-resolver-ant-tasks.jar}" /> </classpath> - </typedef> + </taskdef> + </target> + + <target name="maven-install" depends="init-maven"> + <!--cleanup--> + <delete file="${pom}.tmp"/> + + <!--replace the version in the pom--> + <copy file="${pom}" tofile="${pom}.tmp"> + <filterset> + <filter token="MAVEN.DEPLOY.VERSION" value="${maven.deploy.version}"/> + </filterset> + </copy> + + <resolver:install file="${file}"> + <pom file="${pom}.tmp"/> + </resolver:install> + + <delete file="${pom}.tmp"/> </target> + <macrodef name="doMavenInstall"> + <attribute name="artifactId"/> + <attribute name="jarFileName" default="@{artifactId}.jar" /> + <attribute name="groupId" default="org.apache.tomcat" /> + <attribute name="file" default="${tomcat.lib.path}/@{jarFileName}" /> + <attribute name="pom" default="@{artifactId}.pom" /> + <attribute name="srcJarFileName" default="@{artifactId}-src.jar" /> + <attribute name="src" default="${tomcat.src.path}/@{srcJarFileName}" /> + <sequential> + <antcall target="maven-install"> + <param name="file" value="@{file}"/> + <param name="groupId" value="@{groupId}"/> + <param name="artifactId" value="@{artifactId}"/> + <param name="pom" value="${tomcat.pom.path}/@{pom}"/> + <param name="src" value="@{src}"/> + <param name="src.skip" value="@{src.skip}"/> + <param name="maven.deploy.version" value="${maven.asf.release.deploy.version}-dev"/> + </antcall> + </sequential> + </macrodef> + <target name="maven-deploy" depends="init-maven"> <!--cleanup--> <delete file="${pom}.tmp"/> @@ -49,44 +93,32 @@ </copy> <!--sign the jar, the source and the pom --> - <exec executable="${gpg.exec}" failonerror="true" - inputstring="${gpg.passphrase}"> - <arg value="--passphrase-fd"/> - <arg value="0"/> - <arg value="-a"/> - <arg value="-b"/> - <arg value="${file}"/> - </exec> - <exec executable="${gpg.exec}" failonerror="true" - inputstring="${gpg.passphrase}"> - <arg value="--passphrase-fd"/> - <arg value="0"/> - <arg value="-a"/> - <arg value="-b"/> - <arg value="${src}"/> - </exec> - <exec executable="${gpg.exec}" failonerror="true" - inputstring="${gpg.passphrase}"> - <arg value="--passphrase-fd"/> - <arg value="0"/> - <arg value="-a"/> - <arg value="-b"/> - <arg value="-o"/> - <arg value="${pom}.asc"/> - <arg value="${pom}.tmp"/> - </exec> + <antcall target="-sign" > + <param name="file.in" value="${file}" /> + <param name="file.out" value="${file}.asc" /> + </antcall> + <antcall target="-sign" > + <param name="file.in" value="${src}" /> + <param name="file.out" value="${src}.asc" /> + </antcall> + <antcall target="-sign" > + <param name="file.in" value="${pom}.tmp" /> + <param name="file.out" value="${pom}.asc" /> + </antcall> - <artifact:deploy file="${file}"> - <pom file="${pom}.tmp"/> - <remoteRepository url="${maven.repo.url}" layout="default"> - <authentication username="${asf.ldap.username}" - password="${asf.ldap.password}"/> - </remoteRepository> - <attach file="${file}.asc" type="jar.asc"/> - <attach file="${src}" classifier="sources" type="jar"/> - <attach file="${src}.asc" classifier="sources" type="jar.asc"/> - <attach file="${pom}.asc" type="pom.asc"/> - </artifact:deploy> + <resolver:deploy> + <artifact file="${file}" /> + <pom file="${pom}.tmp"/> + <remoterepo id="${maven.repo.repositoryId}" url="${maven.repo.url}"> + <authentication username="${asf.ldap.username}" + password="${asf.ldap.password}" + unless:set="maven.auth.useSettings" /> + </remoterepo> + <artifact file="${file}.asc" type="jar.asc" if:set="gpg.passphrase"/> + <artifact file="${src}" classifier="sources" type="jar"/> + <artifact file="${src}.asc" classifier="sources" type="jar.asc" if:set="gpg.passphrase"/> + <artifact file="${pom}.asc" type="pom.asc" if:set="gpg.passphrase"/> + </resolver:deploy> <delete file="${pom}.tmp"/> <delete file="${pom}.asc"/> @@ -128,34 +160,26 @@ </copy> <!--sign the file and pom --> - <exec executable="${gpg.exec}" failonerror="true" - inputstring="${gpg.passphrase}"> - <arg value="--passphrase-fd"/> - <arg value="0"/> - <arg value="-a"/> - <arg value="-b"/> - <arg value="${file}"/> - </exec> - <exec executable="${gpg.exec}" failonerror="true" - inputstring="${gpg.passphrase}"> - <arg value="--passphrase-fd"/> - <arg value="0"/> - <arg value="-a"/> - <arg value="-b"/> - <arg value="-o"/> - <arg value="${pom}.asc"/> - <arg value="${pom}.tmp"/> - </exec> + <antcall target="-sign" > + <param name="file.in" value="${file}" /> + <param name="file.out" value="${file}.asc" /> + </antcall> + <antcall target="-sign" > + <param name="file.in" value="${pom}.tmp" /> + <param name="file.out" value="${pom}.asc" /> + </antcall> - <artifact:deploy file="${file}"> + <resolver:deploy> + <artifact file="${file}" /> <pom file="${pom}.tmp"/> - <remoteRepository url="${maven.repo.url}" layout="default" > + <remoterepo id="${maven.repo.repositoryId}" url="${maven.repo.url}"> <authentication username="${asf.ldap.username}" - password="${asf.ldap.password}"/> - </remoteRepository> - <attach file="${file}.asc" type="jar.asc"/> - <attach file="${pom}.asc" type="pom.asc"/> - </artifact:deploy> + password="${asf.ldap.password}" + unless:set="maven.auth.useSettings"/> + </remoterepo> + <artifact file="${file}.asc" type="jar.asc" if:set="gpg.passphrase"/> + <artifact file="${pom}.asc" type="pom.asc" if:set="gpg.passphrase"/> + </resolver:deploy> <delete file="${pom}.tmp"/> <delete file="${pom}.asc"/> @@ -193,45 +217,32 @@ </copy> <!--sign the zip, the tar.gz and the pom --> - <exec executable="${gpg.exec}" failonerror="true" - inputstring="${gpg.passphrase}"> - <arg value="--passphrase-fd"/> - <arg value="0"/> - <arg value="-a"/> - <arg value="-b"/> - <arg value="${file}.zip"/> - </exec> - <exec executable="${gpg.exec}" failonerror="true" - inputstring="${gpg.passphrase}"> - <arg value="--passphrase-fd"/> - <arg value="0"/> - <arg value="-a"/> - <arg value="-b"/> - <arg value="${file}.tar.gz"/> - </exec> - <exec executable="${gpg.exec}" failonerror="true" - inputstring="${gpg.passphrase}"> - <arg value="--passphrase-fd"/> - <arg value="0"/> - <arg value="-a"/> - <arg value="-b"/> - <arg value="-o"/> - <arg value="${pom}.asc"/> - <arg value="${pom}.tmp"/> - </exec> + <antcall target="-sign" > + <param name="file.in" value="${file}.zip" /> + <param name="file.out" value="${file}.zip.asc" /> + </antcall> + <antcall target="-sign" > + <param name="file.in" value="${file}.tar.gz" /> + <param name="file.out" value="${file}.tar.gz.asc" /> + </antcall> + <antcall target="-sign" > + <param name="file.in" value="${pom}.tmp" /> + <param name="file.out" value="${pom}.asc" /> + </antcall> - <artifact:deploy file="${pom}"> - <pom file="${pom}.tmp"/> - <remoteRepository url="${maven.repo.url}" layout="default"> - <authentication username="${asf.ldap.username}" - password="${asf.ldap.password}"/> - </remoteRepository> - <attach file="${file}.zip" type="zip"/> - <attach file="${file}.zip.asc" type="zip.asc"/> - <attach file="${file}.tar.gz" type="tar.gz"/> - <attach file="${file}.tar.gz.asc" type="tar.gz.asc"/> - <attach file="${pom}.asc" type="pom.asc"/> - </artifact:deploy> + <resolver:deploy> + <pom file="${pom}.tmp"/> + <remoterepo id="${maven.repo.repositoryId}" url="${maven.repo.url}"> + <authentication username="${asf.ldap.username}" + password="${asf.ldap.password}" + unless:set="maven.auth.useSettings"/> + </remoterepo> + <artifact file="${file}.zip" type="zip"/> + <artifact file="${file}.zip.asc" type="zip.asc" if:set="gpg.passphrase"/> + <artifact file="${file}.tar.gz" type="tar.gz"/> + <artifact file="${file}.tar.gz.asc" type="tar.gz.asc" if:set="gpg.passphrase"/> + <artifact file="${pom}.asc" type="pom.asc" if:set="gpg.passphrase"/> + </resolver:deploy> <delete file="${pom}.tmp"/> <delete file="${pom}.asc"/> @@ -254,7 +265,7 @@ </sequential> </macrodef> - <target name="generic-deploy" depends="init-maven,init-gpg,init-ldap"> + <target name="generic-deploy" depends="init-maven,init-gpg-1,init-gpg-2,init-ldap"> <!-- Standard jars in bin directory --> <!-- Skip bootstrap.jar - it is just a subset of catalina.jar --> <doMavenDeploy artifactId="tomcat-juli" @@ -403,17 +414,61 @@ </antcall> </target> - <target name="init-gpg"> + <target name="init-gpg-1"> + <available file="${gpg.exec}" property="gpg.exec.available"/> + </target> + + <target name="init-gpg-2" if="${gpg.exec.available}"> <input message="Enter GPG pass-phrase" addproperty="gpg.passphrase" > <handler type="secure"/> </input> </target> - <target name="init-ldap"> + <target name="init-ldap" unless="maven.auth.useSettings"> <input message="Enter ASF LDAP (same as svn) password" addproperty="asf.ldap.password" > <handler type="secure"/> </input> </target> + <target name="-sign" if="gpg.passphrase"> + <fail unless="file" /> + <exec executable="${gpg.exec}" failonerror="true" + inputstring="${gpg.passphrase}"> + <arg value="--batch"/> + <arg value="--pinentry-mode"/> + <arg value="loopback"/> + <arg value="--passphrase-fd"/> + <arg value="0"/> + <arg value="-a"/> + <arg value="-b"/> + <arg value="-o"/> + <arg value="${file.out}"/> + <arg value="${file.in}"/> + </exec> + </target> + + <!-- =============== Utility Targets to support downloads ================ --> + + <target name="setproxy" if="${proxy.use}"> + <setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}" + proxyuser="${proxy.user}" proxypassword="${proxy.password}" /> + <echo message="Using ${proxy.host}:${proxy.port} to download ${sourcefile}"/> + </target> + + <target name="testexist"> + <echo message="Testing for ${destfile}"/> + <available file="${destfile}" property="exist"/> + </target> + + <target name="downloadfile" unless="exist" depends="testexist,setproxy"> + <!-- Download the file --> + <local name="temp.file"/> + <mkdir dir="${base.path}"/> + <tempfile property="temp.file" destdir="${base.path}" prefix="download-" suffix=".tmp"/> + <get src="${sourcefile}" httpusecaches="${trydownload.httpusecaches}" dest="${temp.file}"/> + <mkdir dir="${destdir}"/> + <move file="${temp.file}" tofile="${destfile}"/> + </target> + </project> diff --git a/res/maven/mvn.properties.default b/res/maven/mvn.properties.default index 150dd05..1e365f2 100644 --- a/res/maven/mvn.properties.default +++ b/res/maven/mvn.properties.default @@ -24,15 +24,19 @@ # running this script asf.ldap.username=<!-- YOUR APACHE LDAP USERNAME --> gpg.exec=C:/software/GNU/GnuPG/gpg.exe +# Set this property to use the user name and password from the Maven +# settings.xml file rather than from asf.ldap.username and prompting for the +# associated password +# maven.auth.useSettings=Anything # ASF Snapshot Repository (hosted on Nexus) maven.snapshot.repo.url=https://repository.apache.org/content/repositories/snapshots -maven.snapshot.repo.repositoryId=apache.snapshots +maven.snapshot.repo.repositoryId=apache.snapshots.https # ASF Release Repository (hosted on Nexus) # Note: Also used for staging releases prior to voting maven.asf.release.repo.url=https://repository.apache.org/service/local/staging/deploy/maven2 -maven.asf.release.repo.repositoryId=apache.releases +maven.asf.release.repo.repositoryId=apache.releases.https # Release version info maven.asf.release.deploy.version=7.0.105 @@ -49,3 +53,15 @@ tomcat.extras.src.path=../../output/extras-src-jars #Where do we find the POM files tomcat.pom.path=../../res/maven + +# ----- Default Base Path for Dependent Packages ----- +# Please note this path must be absolute, not relative, +# as it is referenced with different working directory +# contexts by the various build scripts. +base.path=${user.home}/tomcat-build-libs + +# ----- Maven Ant Tasks ----- +maven-resolver-ant-tasks.version=1.2.0 +maven-resolver-ant-tasks.home=${base.path}/maven-resolver-ant-tasks-${maven-resolver-ant-tasks.version} +maven-resolver-ant-tasks.loc=https://repo1.maven.org/maven2/org/apache/maven/resolver/maven-resolver-ant-tasks/${maven-resolver-ant-tasks.version}/maven-resolver-ant-tasks-${maven-resolver-ant-tasks.version}-uber.jar +maven-resolver-ant-tasks.jar=${maven-resolver-ant-tasks.home}/maven-resolver-ant-tasks-${maven-resolver-ant-tasks.version}-uber.jar diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 428370a..3707cdd 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -96,6 +96,11 @@ environment variable that defines a command to which captured stdout and stderr will be redirected. Patch provided by Harald Dunkel. (markt) </add> + <update> + Switch from the unsupported Maven Ant Tasks to the supported Maven + Resolver Ant Tasks to upload artifacts to the ASF Maven repository (and + from there to Maven Central). (markt) + </update> </changelog> </subsection> </section> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org