You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/05/29 20:13:12 UTC
[tomcat] branch 7.0.x updated: Switch to Maven Resolver Ant tasks
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org