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