mirror of https://github.com/apache/ant-ivy
1047 lines
50 KiB
XML
1047 lines
50 KiB
XML
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
https://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
-->
|
|
<project name="IvyRelease" default="snapshot"
|
|
xmlns:ivy="antlib:org.apache.ivy.ant"
|
|
xmlns:ivy2="antlib:org.apache.ivy.ant_2"
|
|
xmlns:asciidoctor="antlib:org.asciidoctor.ant"
|
|
xmlns:openpgp="antlib:org.apache.commons.openpgp.ant">
|
|
|
|
<import file="build.xml"/>
|
|
|
|
<macrodef name="run-tutorial">
|
|
<attribute name="antfile"/>
|
|
<attribute name="output"/>
|
|
<attribute name="target" default=""/>
|
|
<attribute name="failonerror" default="true"/>
|
|
<sequential>
|
|
<echo>Running @{antfile} @{target} > @{output}</echo>
|
|
|
|
<local name="antfile.dir"/>
|
|
<dirname property="antfile.dir" file="@{antfile}"/>
|
|
|
|
<local name="antfile.name"/>
|
|
<basename property="antfile.name" file="@{antfile}"/>
|
|
|
|
<echo file="@{output}">[ivy@apache:${antfile.dir}]$ ant -f ${antfile.name} @{target}${line.separator}</echo>
|
|
<java classname="org.apache.tools.ant.launch.Launcher"
|
|
fork="true"
|
|
failonerror="@{failonerror}"
|
|
logerror="true"
|
|
append="true"
|
|
output="@{output}">
|
|
<classpath>
|
|
<fileset file="${artifacts.build.dir}/jars/${final.name}"/>
|
|
|
|
<!--
|
|
We need to set the classpath like this, otherwise the invoked
|
|
build scripts are not capable of compiling sources ???
|
|
-->
|
|
<path path="${java.class.path}"/>
|
|
</classpath>
|
|
<sysproperty key="ivy.cache.dir" value="${tutorial.cache}"/>
|
|
<sysproperty key="ivy.local.default.root" value="${tutorial.local-repo}"/>
|
|
<sysproperty key="ivy.cache.ttl.default" value="1s"/>
|
|
<sysproperty key="skip.download" value="true"/>
|
|
<arg line="-f @{antfile}"/>
|
|
<arg line="@{target}"/>
|
|
</java>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<target name="generate-tutorial-output" depends="jar" unless="skip.generate-tutorial-output">
|
|
<property name="output.dir" value="${basedir}/asciidoc/tutorial/log"/>
|
|
<delete dir="${output.dir}"/>
|
|
<mkdir dir="${output.dir}"/>
|
|
|
|
<!-- create a copy of the tutorials so we can easily get rid of the generated files -->
|
|
<property name="tutorial.src.dir" value="${build.dir}/examples"/>
|
|
<delete dir="${tutorial.src.dir}"/>
|
|
<mkdir dir="${tutorial.src.dir}"/>
|
|
<copy todir="${tutorial.src.dir}">
|
|
<fileset dir="src/example"/>
|
|
</copy>
|
|
|
|
<!-- create a cache and local-repository for the tutorials -->
|
|
<property name="tutorial.build.dir" value="${build.dir}/tutorial"/>
|
|
<property name="tutorial.cache" value="${tutorial.build.dir}/cache"/>
|
|
<property name="tutorial.local-repo" value="${tutorial.build.dir}/local"/>
|
|
|
|
<!-- go-ivy : not logged, but run in order to check if it still run -->
|
|
<run-tutorial antfile="${tutorial.src.dir}/go-ivy/build.xml" output="${output.dir}/dummy.txt"/>
|
|
<delete file="${output.dir}/dummy.txt"/>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
|
|
<!-- hello-ivy : Quick Start - start.html -->
|
|
<run-tutorial antfile="${tutorial.src.dir}/hello-ivy/build.xml" output="${output.dir}/hello-ivy-1.txt"/>
|
|
<run-tutorial antfile="${tutorial.src.dir}/hello-ivy/build.xml" output="${output.dir}/hello-ivy-2.txt"/>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
|
|
<!-- multiple resolvers - multiple.html -->
|
|
<run-tutorial antfile="${tutorial.src.dir}/chained-resolvers/chainedresolvers-project/build.xml" output="${output.dir}/chained-resolvers.txt"/>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
|
|
<!-- dual - dual.html -->
|
|
<run-tutorial antfile="${tutorial.src.dir}/dual/project/build.xml" output="${output.dir}/dual.txt"/>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
|
|
<!-- Project dependencies - multi-project.html -->
|
|
<run-tutorial antfile="${tutorial.src.dir}/dependence/dependee/build.xml" target="publish" output="${output.dir}/dependence-standalone.txt"/>
|
|
<run-tutorial antfile="${tutorial.src.dir}/dependence/depender/build.xml" output="${output.dir}/dependence-depending.txt"/>
|
|
<run-tutorial antfile="${tutorial.src.dir}/dependence/dependee/build.xml" target="publish" output="${output.dir}/dependence-standalone-2.txt"/>
|
|
<run-tutorial antfile="${tutorial.src.dir}/dependence/depender/build.xml" output="${output.dir}/dependence-depending-2.txt"/>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
|
|
<!-- configuration - Using Ivy Configuration - conf.html -->
|
|
<run-tutorial antfile="${tutorial.src.dir}/configurations/multi-projects/filter-framework/build.xml" output="${output.dir}/configurations-lib.txt"/>
|
|
<run-tutorial antfile="${tutorial.src.dir}/configurations/multi-projects/myapp/build.xml" output="${output.dir}/configurations-runcc.txt"/>
|
|
<run-tutorial antfile="${tutorial.src.dir}/configurations/multi-projects/myapp/build.xml" target="run-hm" output="${output.dir}/configurations-runhm.txt"/>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
|
|
<!--Building a repository - basic.html -->
|
|
<run-tutorial antfile="${tutorial.src.dir}/build-a-ivy-repository/build.xml" target="maven2" output="${output.dir}/install.txt"/>
|
|
<pathconvert property="myrepository.content" pathsep="${line.separator}">
|
|
<fileset dir="${tutorial.src.dir}/build-a-ivy-repository/myrepository/no-namespace"/>
|
|
</pathconvert>
|
|
<echo file="${output.dir}/myrepository-content.txt">[ivy@apache:/]$ find ${tutorial.src.dir}/build-a-ivy-repository/myrepository/no-namespace -type f -print${line.separator}</echo>
|
|
<echo file="${output.dir}/myrepository-content.txt" append="true">${myrepository.content}</echo>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
<echo>NB! This tutorial fails deliberately!</echo>
|
|
<run-tutorial antfile="${tutorial.src.dir}/build-a-ivy-repository/build.xml" target="maven2-deps" output="${output.dir}/install-deps.txt" failonerror="false"/>
|
|
<pathconvert property="myrepository.content.deps" pathsep="${line.separator}">
|
|
<fileset dir="${tutorial.src.dir}/build-a-ivy-repository/myrepository/no-namespace/org.hibernate/hibernate"/>
|
|
</pathconvert>
|
|
<echo file="${output.dir}/myrepository-content-deps.txt">[ivy@apache:/]$ find ${tutorial.src.dir}/build-a-ivy-repository/myrepository/no-namespace/org.hibernate/hibernate -type f -print${line.separator}</echo>
|
|
<echo file="${output.dir}/myrepository-content-deps.txt" append="true">${myrepository.content.deps}</echo>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
|
|
<!--Building a repository - advanced.html -->
|
|
<run-tutorial antfile="${tutorial.src.dir}/build-a-ivy-repository/build.xml" target="maven2-namespace" output="${output.dir}/install-namespace.txt"/>
|
|
<pathconvert property="myrepository.content.namespace" pathsep="${line.separator}">
|
|
<fileset dir="${tutorial.src.dir}/build-a-ivy-repository/myrepository/advanced"/>
|
|
</pathconvert>
|
|
<echo file="${output.dir}/myrepository-content-namespace.txt">$ find ${tutorial.src.dir}/build-a-ivy-repository/myrepository/advanced -type f -print${line.separator}</echo>
|
|
<echo file="${output.dir}/myrepository-content-namespace.txt" append="true">${myrepository.content.namespace}</echo>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
|
|
<!-- multi-project - multiproject.html -->
|
|
<run-tutorial antfile="${tutorial.src.dir}/multi-project/build.xml" target="-p" output="${output.dir}/multi-project-general-antp.txt"/>
|
|
<run-tutorial antfile="${tutorial.src.dir}/multi-project/projects/find/build.xml" target="-p" output="${output.dir}/multi-project-find-antp.txt"/>
|
|
<run-tutorial antfile="${tutorial.src.dir}/multi-project/build.xml" target="publish-all" output="${output.dir}/multi-project-general-publishall.txt"/>
|
|
<delete dir="${tutorial.build.dir}"/>
|
|
|
|
<!-- Correct the location of the examples to a dummy '/ivy' location -->
|
|
<pathconvert property="tutorial.root" dirsep="/">
|
|
<identitymapper/>
|
|
<path location="${tutorial.src.dir}"/>
|
|
</pathconvert>
|
|
<pathconvert property="tutorial.local" dirsep="/">
|
|
<identitymapper/>
|
|
<path location="${tutorial.local-repo}"/>
|
|
</pathconvert>
|
|
<pathconvert property="ivy.jar.location" dirsep="/">
|
|
<identitymapper/>
|
|
<fileset file="${artifacts.build.dir}/jars/${final.name}"/>
|
|
</pathconvert>
|
|
|
|
<replace dir="${output.dir}" token="\" value="/"/>
|
|
<replace dir="${output.dir}" token="${tutorial.root}" value="/ivy"/>
|
|
<replace dir="${output.dir}" token="${tutorial.local}" value="/home/ivy/.ivy2/local"/>
|
|
<replace dir="${output.dir}" token="${ivy.jar.location}" value="//home/ivy/ivy.jar"/>
|
|
<replace dir="${output.dir}" token="-f build.xml " value=""/>
|
|
<replace dir="${output.dir}" token="${ivy.revision}" value="working@apache"/>
|
|
</target>
|
|
|
|
<target name="init-asciidoctor-extensions" depends="init-ivy" unless="skip.doc">
|
|
<ivy:cachepath pathid="asciidoctorj.path" organisation="org.asciidoctor" module="asciidoctorj" revision="1.5.7" conf="default" inline="true"/>
|
|
<mkdir dir="${build.dir}/asciidoc-extensions/classes"/>
|
|
<javac srcdir="${doc.src.dir}/templates/extensions/src" destdir="${build.dir}/asciidoc-extensions/classes"
|
|
debug="true" includeantruntime="no" classpathref="asciidoctorj.path"/>
|
|
<copy todir="${build.dir}/asciidoc-extensions">
|
|
<fileset dir="${doc.src.dir}/templates/extensions/src">
|
|
<exclude name="**/*.java"/>
|
|
</fileset>
|
|
</copy>
|
|
</target>
|
|
|
|
<target name="init-asciidoctor" depends="init-asciidoctor-extensions" unless="skip.doc">
|
|
<mkdir dir="${build.dir}/asciidoc-lib/jars"/>
|
|
<mkdir dir="${build.dir}/asciidoc-lib/classes"/>
|
|
<ivy:retrieve organisation="org.asciidoctor" module="asciidoctor-ant" revision="1.5.5" conf="default" inline="true" pattern="${build.dir}/asciidoc-lib/jars/[artifact].[ext]"/>
|
|
<unzip src="${build.dir}/asciidoc-lib/jars/asciidoctor-ant.jar" dest="${build.dir}/asciidoc-lib/classes"/>
|
|
<taskdef uri="antlib:org.asciidoctor.ant" resource="org/asciidoctor/ant/antlib.xml">
|
|
<classpath>
|
|
<pathelement location="${build.dir}/asciidoc-extensions/classes"/>
|
|
<pathelement location="${build.dir}/asciidoc-lib/classes"/>
|
|
</classpath>
|
|
</taskdef>
|
|
</target>
|
|
|
|
<target name="copy-doc-files" unless="skip.doc">
|
|
<copy todir="${doc.build.dir}">
|
|
<fileset dir="${doc.src.dir}" includes="images/**,style/**,samples/**,js/**,ivy.xsd"/>
|
|
<fileset dir="${doc.src.dir}" includes="tutorial/log/multi-project-general-publishall.txt"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<target name="generate-doc" depends="generate-tutorial-output,default-version,init-asciidoctor,copy-doc-files" unless="skip.doc">
|
|
<asciidoctor:convert sourceDirectory="${doc.src.dir}" outputDirectory="${doc.build.dir}" backend="xhtml5"
|
|
templateDir="${doc.src.dir}/templates" preserveDirectories="true"
|
|
sourceHighlighter="highlightjs">
|
|
<attribute key="basedir" value="${doc.src.dir}"/>
|
|
<attribute key="imagesdir" value=""/>
|
|
<attribute key="version" value="${build.version}"/>
|
|
<inlineMacroProcessor blockName="jira" className="org.apache.ivy.asciidoc.JiraMacro"/>
|
|
</asciidoctor:convert>
|
|
</target>
|
|
|
|
<target name="generate-book-adoc" depends="default-version,copy-doc-files" unless="skip.doc">
|
|
<scriptdef name="generate-book-adoc" language="javascript">
|
|
<attribute name="jsontocfile"/>
|
|
<attribute name="destFile"/>
|
|
<![CDATA[
|
|
var tocfile = self.getProject().resolveFile(attributes.get("jsontocfile"))
|
|
r = new java.io.BufferedReader(new java.io.FileReader(tocfile));
|
|
var val = "";
|
|
while ((s = r.readLine()) != null) {
|
|
val += s;
|
|
}
|
|
r.close();
|
|
var toc = eval("("+val+")")
|
|
|
|
var writeToc = function(o, children, level) {
|
|
for (var c in children) {
|
|
o.write(level + ' link:#' + children[c].id.replace(/\//g, '_') + '[' + children[c].title + ']\n');
|
|
if (children[c].children && children[c].children.length && children[c].children.length != 0) {
|
|
writeToc(o, children[c].children, level+'*');
|
|
}
|
|
}
|
|
};
|
|
|
|
var writeInclude = function(o, children) {
|
|
for (var c in children) {
|
|
o.write('== [[' + children[c].id.replace(/\//g, '_') + ']]' + children[c].title + '\n\n');
|
|
o.write('include::../asciidoc/' + children[c].id + '.adoc[]\n\n');
|
|
if (children[c].children && children[c].children.length && children[c].children.length != 0) {
|
|
writeInclude(o, children[c].children);
|
|
}
|
|
}
|
|
};
|
|
|
|
out = new java.io.FileWriter(self.getProject().resolveFile(attributes.get("destfile")));
|
|
out.write('== Table of Contents\n\n');
|
|
writeToc(out, toc.children[0].children, '*');
|
|
out.write('\n\n');
|
|
writeInclude(out, toc.children[0].children, '*');
|
|
out.close();
|
|
]]>
|
|
</scriptdef>
|
|
<mkdir dir="${build.dir}/book"/>
|
|
<generate-book-adoc jsontocfile="${doc.src.dir}/toc.json" destFile="${build.dir}/book/book.adoc"/>
|
|
</target>
|
|
|
|
<target name="generate-book" depends="generate-book-adoc,init-asciidoctor">
|
|
<asciidoctor:convert sourceDirectory="${build.dir}/book" outputDirectory="${doc.build.dir}" backend="xhtml5"
|
|
templateDir="${doc.src.dir}/templates/book" sourceHighlighter="highlightjs" doctype="book">
|
|
<attribute key="version" value="${build.version}"/>
|
|
<inlineMacroProcessor blockName="jira" className="org.apache.ivy.asciidoc.JiraMacro"/>
|
|
</asciidoctor:convert>
|
|
</target>
|
|
|
|
<target name="all-doc" depends="javadoc,generate-doc,generate-book"/>
|
|
|
|
<target name="init-snapshot" depends="default-version">
|
|
<property name="snapshot.full.name" value="apache-ivy-${build.version}"/>
|
|
</target>
|
|
|
|
<target name="snapshot-metadata" depends="init-snapshot,resolve">
|
|
<mkdir dir="${artifacts.build.dir}"/>
|
|
<ivy:deliver
|
|
deliverpattern="${artifacts.build.dir}/ivy.xml"
|
|
pubrevision="${build.version}"
|
|
pubdate="${pubdate}"
|
|
status="${status}"/>
|
|
</target>
|
|
|
|
<target name="snapshot-src" depends="init-snapshot">
|
|
<delete dir="${build.dir}/snapshot-src" failonerror="false"/>
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="clone ${basedir} ${build.dir}/snapshot-src"/>
|
|
</exec>
|
|
<exec dir="${build.dir}/snapshot-src" executable="git" failonerror="true">
|
|
<arg line="clean -d -x -f"/>
|
|
</exec>
|
|
<mkdir dir="${distrib.dir}/dist/${build.version}"/>
|
|
<zip destfile="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-src.zip" defaultexcludes="no">
|
|
<zipfileset dir="${build.dir}/snapshot-src" prefix="${snapshot.full.name}" defaultexcludes="no" excludes=".git/**" id="dist.sources"/>
|
|
</zip>
|
|
<tar destfile="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-src.tar.gz"
|
|
compression="gzip" longfile="gnu" defaultexcludes="no">
|
|
<zipfileset refid="dist.sources"/>
|
|
</tar>
|
|
</target>
|
|
|
|
<target name="snapshot-bin-without-dependencies" depends="snapshot-metadata,jar,jar-sbom,all-doc">
|
|
<mkdir dir="${distrib.dir}/dist/${build.version}"/>
|
|
<zip destfile="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-bin.zip">
|
|
<zipfileset dir="${doc.build.dir}" prefix="${snapshot.full.name}/doc" excludes="**/reports/coverage/**,**/reports/test/**"/>
|
|
<zipfileset dir="${basedir}/src/example" prefix="${snapshot.full.name}/src/example"/>
|
|
<zipfileset dir="${basedir}" includes="NOTICE" fullpath="${snapshot.full.name}/NOTICE"/>
|
|
<zipfileset dir="${basedir}" includes="README" prefix="${snapshot.full.name}"/>
|
|
<zipfileset dir="${basedir}" includes="LICENSE*" prefix="${snapshot.full.name}"/>
|
|
<zipfileset dir="${basedir}" includes="CHANGES.txt" fullpath="${snapshot.full.name}/CHANGES.txt"/>
|
|
<zipfileset dir="${basedir}" includes="RELEASE_NOTES" fullpath="${snapshot.full.name}/RELEASE_NOTES"/>
|
|
<zipfileset dir="${src.dir}/org/apache/ivy/plugins/parser/xml" includes="ivy.xsd" fullpath="${snapshot.full.name}/ivy.xsd"/>
|
|
<zipfileset dir="${artifacts.build.dir}" includes="ivy.xml" fullpath="${snapshot.full.name}/ivy.xml"/>
|
|
<zipfileset dir="${basedir}" includes="build-for-bin-distrib.xml" fullpath="${snapshot.full.name}/build.xml"/>
|
|
|
|
<zipfileset dir="${artifacts.build.dir}/jars" includes="${final.name}" fullpath="${snapshot.full.name}/ivy-${build.version}.jar"/>
|
|
<zipfileset dir="${artifacts.build.dir}/jars" includes="ivy-${build.version}.cdx.*" prefix="${snapshot.full.name}"/>
|
|
</zip>
|
|
<tar destfile="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-bin.tar.gz"
|
|
compression="gzip" longfile="gnu">
|
|
<zipfileset src="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-bin.zip"/>
|
|
</tar>
|
|
</target>
|
|
|
|
<target name="snapshot-bin-with-dependencies" depends="snapshot-metadata,jar,jar-sbom,all-doc">
|
|
<mkdir dir="${distrib.dir}/dist/${build.version}"/>
|
|
<delete dir="${build.dir}/lib"/>
|
|
<ivy:retrieve conf="default" pattern="${build.dir}/lib/[artifact]-[revision].[ext]"/>
|
|
<zip destfile="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-bin-with-deps.zip">
|
|
<zipfileset dir="${doc.build.dir}" prefix="${snapshot.full.name}/doc" excludes="**/reports/coverage/**,**/reports/test/**"/>
|
|
<zipfileset dir="${basedir}/src/example" prefix="${snapshot.full.name}/src/example"/>
|
|
<zipfileset dir="${basedir}" includes="NOTICE" fullpath="${snapshot.full.name}/NOTICE"/>
|
|
<zipfileset dir="${basedir}" includes="README" prefix="${snapshot.full.name}"/>
|
|
<zipfileset dir="${basedir}" includes="LICENSE*" prefix="${snapshot.full.name}"/>
|
|
<zipfileset dir="${basedir}" includes="CHANGES.txt" fullpath="${snapshot.full.name}/CHANGES.txt"/>
|
|
<zipfileset dir="${basedir}" includes="RELEASE_NOTES" fullpath="${snapshot.full.name}/RELEASE_NOTES"/>
|
|
<zipfileset dir="${src.dir}/org/apache/ivy/plugins/parser/xml" includes="ivy.xsd" fullpath="${snapshot.full.name}/ivy.xsd"/>
|
|
<zipfileset dir="${artifacts.build.dir}" includes="ivy.xml" fullpath="${snapshot.full.name}/ivy.xml"/>
|
|
|
|
<zipfileset dir="${artifacts.build.dir}/jars" includes="${final.name}" fullpath="${snapshot.full.name}/ivy-${build.version}.jar"/>
|
|
<zipfileset dir="${artifacts.build.dir}/jars" includes="ivy-${build.version}.cdx.*" prefix="${snapshot.full.name}"/>
|
|
|
|
<zipfileset dir="${build.dir}/lib" prefix="${snapshot.full.name}/lib" excludes="ant-*.jar,bcpg-*.jar,bcprov*.jar"/>
|
|
</zip>
|
|
<tar destfile="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-bin-with-deps.tar.gz"
|
|
compression="gzip" longfile="gnu">
|
|
<zipfileset src="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-bin-with-deps.zip"/>
|
|
</tar>
|
|
</target>
|
|
|
|
<target name="snapshot-bin"
|
|
depends="snapshot-bin-with-dependencies,snapshot-bin-without-dependencies"/>
|
|
|
|
<target name="release-xsd" depends="init-snapshot">
|
|
<!-- copies current ivy xml schema to doc source, so that it will be available from web site -->
|
|
<copy file="${src.dir}/org/apache/ivy/plugins/parser/xml/ivy.xsd" todir="${doc.src.dir}"/>
|
|
</target>
|
|
|
|
<target name="snapshot-maven2" depends="init-snapshot,snapshot-metadata,jar,sources,javadoc">
|
|
<property name="m2.distrib.dir" value="${distrib.dir}/maven2/${build.version}"/>
|
|
<ivy:makepom ivyfile="${artifacts.build.dir}/ivy.xml"
|
|
pomfile="${m2.distrib.dir}/ivy-${build.version}.pom"
|
|
templatefile="${basedir}/src/etc/makepom/pom.template">
|
|
<mapping conf="core" scope="compile"/>
|
|
<mapping conf="test" scope="test"/>
|
|
</ivy:makepom>
|
|
<copy file="${artifacts.build.dir}/jars/${final.name}"
|
|
tofile="${m2.distrib.dir}/ivy-${build.version}.jar"/>
|
|
<!-- SBOMs -->
|
|
<copy todir="${m2.distrib.dir}">
|
|
<fileset dir="${artifacts.build.dir}/jars" includes="ivy-${build.version}.cdx.*"/>
|
|
</copy>
|
|
<!-- jar javadocs -->
|
|
<jar destfile="${m2.distrib.dir}/ivy-${build.version}-javadoc.jar">
|
|
<fileset dir="${javadoc.build.dir}"/>
|
|
</jar>
|
|
<!-- copy sources jar -->
|
|
<copy file="${artifacts.build.dir}/sources/${final.name}"
|
|
tofile="${m2.distrib.dir}/ivy-${build.version}-sources.jar"/>
|
|
|
|
<checksum algorithm="sha1">
|
|
<fileset dir="${m2.distrib.dir}">
|
|
<include name="*.pom"/>
|
|
<include name="*.jar"/>
|
|
<include name="*.cdx.json"/>
|
|
<include name="*.cdx.xml"/>
|
|
</fileset>
|
|
</checksum>
|
|
<checksum algorithm="sha-512" fileext=".sha512">
|
|
<fileset dir="${m2.distrib.dir}">
|
|
<include name="*.pom"/>
|
|
<include name="*.jar"/>
|
|
<include name="*.cdx.json"/>
|
|
<include name="*.cdx.xml"/>
|
|
</fileset>
|
|
</checksum>
|
|
</target>
|
|
|
|
<target name="snapshot-checksums">
|
|
<checksum algorithm="sha1">
|
|
<fileset dir="${distrib.dir}/dist/${build.version}">
|
|
<include name="*.pom"/>
|
|
<include name="*.jar"/>
|
|
<include name="*.zip"/>
|
|
<include name="*.gz"/>
|
|
<include name="*.cdx.json"/>
|
|
<include name="*.cdx.xml"/>
|
|
</fileset>
|
|
</checksum>
|
|
<checksum algorithm="sha-512" fileext=".sha512">
|
|
<fileset dir="${distrib.dir}/dist/${build.version}">
|
|
<include name="*.pom"/>
|
|
<include name="*.jar"/>
|
|
<include name="*.zip"/>
|
|
<include name="*.gz"/>
|
|
<include name="*.cdx.json"/>
|
|
<include name="*.cdx.xml"/>
|
|
</fileset>
|
|
</checksum>
|
|
</target>
|
|
|
|
<target name="snapshot-version">
|
|
<property name="version.prefix" value="${target.ivy.version}-dev-"/>
|
|
</target>
|
|
|
|
<target name="release-version">
|
|
<property name="build.version" value="${target.ivy.version}"/>
|
|
<echo>Setting version to ${build.version}</echo>
|
|
<condition property="status" value="release">
|
|
<matches pattern="^\d+\.\d+\.\d+$" string="${build.version}"/>
|
|
</condition>
|
|
<condition property="status" value="milestone">
|
|
<matches pattern="^\d+\.\d+\.\d+-(alpha|beta|rc)\d+$" string="${build.version}"/>
|
|
</condition>
|
|
<property name="status" value="integration"/>
|
|
<echo>Setting status to ${status}</echo>
|
|
</target>
|
|
|
|
<target name="sign" depends="init-ivy">
|
|
<property file="${user.home}/ivybuild.properties"/>
|
|
<input message="please enter your PGP password: " addproperty="pgp.password"/>
|
|
<input message="please enter your PGP keyId: " addproperty="pgp.keyId"/>
|
|
|
|
<ivy:retrieve conf="default" pattern="${build.dir}/lib/[artifact]-[revision].[ext]"/>
|
|
|
|
<taskdef resource="org/apache/ivy/ant/antlib.xml"
|
|
uri="antlib:org.apache.ivy.ant_2">
|
|
<classpath>
|
|
<fileset dir="${artifacts.build.dir}/jars" includes="${final.name}"/>
|
|
<fileset dir="${build.dir}/lib" excludes="ant-*.jar"/>
|
|
</classpath>
|
|
</taskdef>
|
|
|
|
<ivy2:settings id="sign.settingsId" file="ivysettings-release.xml"/>
|
|
<ivy2:cachepath organisation="org.apache.commons" settingsRef="sign.settingsId" transitive="false" log="download-only"
|
|
module="commons-openpgp" revision="1.0-SNAPSHOT" inline="true" pathid="openpgp.classpath"/>
|
|
<ivy2:cachepath organisation="org.bouncycastle" settingsRef="sign.settingsId" log="download-only"
|
|
module="bcprov-jdk15on" revision="1.60" inline="true" pathid="bouncycastle.bcprov.classpath"/>
|
|
<ivy2:cachepath organisation="org.bouncycastle" settingsRef="sign.settingsId" transitive="false" log="download-only"
|
|
module="bcpg-jdk15on" revision="1.60" inline="true" pathid="bouncycastle.bcpg.classpath"/>
|
|
|
|
<!--
|
|
For some reason, if we use the openpgp:signer task here directly, the bouncycastle security
|
|
provider cannot be loaded. If we launch it as a forked process everything works fine !?!
|
|
-->
|
|
<java classname="org.apache.tools.ant.launch.Launcher"
|
|
fork="true">
|
|
<classpath>
|
|
<fileset dir="${ant.home}" includes="**/*.jar"/>
|
|
<path refid="bouncycastle.bcprov.classpath"/>
|
|
<path refid="bouncycastle.bcpg.classpath"/>
|
|
<path refid="openpgp.classpath"/>
|
|
</classpath>
|
|
<arg line="-f build-release.xml"/>
|
|
<arg line="sign-internal"/>
|
|
<arg line="-Dpgp.password=${pgp.password}"/>
|
|
<arg line="-Dpgp.keyId=${pgp.keyId}"/>
|
|
</java>
|
|
</target>
|
|
|
|
<target name="sign-internal">
|
|
<property file="build.properties"/>
|
|
<taskdef resource="org/apache/commons/openpgp/ant/antlib.xml" uri="antlib:org.apache.commons.openpgp.ant"/>
|
|
<openpgp:signer secring="${user.home}/.gnupg/secring.gpg"
|
|
pubring="${user.home}/.gnupg/pubring.gpg"
|
|
password="${pgp.password}"
|
|
keyid="${pgp.keyId}"
|
|
asciiarmor="true">
|
|
<fileset dir="${distrib.dir}">
|
|
<include name="**/*.pom"/>
|
|
<include name="**/*.cdx.json"/>
|
|
<include name="**/*.cdx.xml"/>
|
|
<include name="**/*.jar"/>
|
|
<include name="**/*.zip"/>
|
|
<include name="**/*.gz"/>
|
|
</fileset>
|
|
</openpgp:signer>
|
|
</target>
|
|
|
|
<target name="rat" depends="init-ivy">
|
|
<property name="rat.failOnError" value="true"/>
|
|
<ivy:cachepath organisation="org.apache.rat" module="apache-rat-tasks" revision="0.16.1"
|
|
inline="true" conf="default" pathid="rat.classpath"
|
|
log="download-only"/>
|
|
|
|
<typedef resource="org/apache/rat/anttasks/antlib.xml"
|
|
uri="antlib:org.apache.rat.anttasks"
|
|
classpathref="rat.classpath"/>
|
|
|
|
<delete dir="${rat.report.dir}"/>
|
|
<mkdir dir="${rat.report.dir}"/>
|
|
<rat:report xmlns:rat="antlib:org.apache.rat.anttasks" reportFile="${rat.report.dir}/rat-report.txt">
|
|
<fileset dir="${basedir}">
|
|
<exclude name=".asf.yaml"/>
|
|
<exclude name=".classpath"/>
|
|
<exclude name="*.iml"/>
|
|
<exclude name="ReleaseInstructions"/>
|
|
<exclude name=".ivy2/**/*"/>
|
|
<exclude name=".idea/**/*"/>
|
|
<exclude name="build/**/*"/>
|
|
<exclude name="bin/**/*"/>
|
|
<exclude name="**/*.md5"/>
|
|
<exclude name="**/*.sha1"/>
|
|
<exclude name="**/*.sha512"/>
|
|
<exclude name="**/*.txt"/>
|
|
<exclude name="**/MANIFEST*.MF"/>
|
|
<exclude name="**/*.json"/>
|
|
<exclude name="**/*.SHA-256"/>
|
|
<exclude name="**/*.SHA-512"/>
|
|
<exclude name="asciidoc/js/jquery.pack.js"/>
|
|
<exclude name="asciidoc/js/jquery.treeview.js"/>
|
|
</fileset>
|
|
</rat:report>
|
|
|
|
<fail message="Some files have missing or incorrect license information. Check RAT report for more details: ${rat.report.dir}/rat-report.txt">
|
|
<condition>
|
|
<and>
|
|
<not><resourcecontains resource="${rat.report.dir}/rat-report.txt" substring="0 Unknown Licenses" casesensitive="false"/></not>
|
|
<equals arg1="${rat.failOnError}" arg2="true"/>
|
|
</and>
|
|
</condition>
|
|
</fail>
|
|
</target>
|
|
|
|
<target name="upload-nexus" depends="release-version,init-ivy,jar">
|
|
<ivy:retrieve conf="default" pattern="${build.dir}/lib/[artifact]-[revision].[ext]"/>
|
|
|
|
<taskdef resource="org/apache/ivy/ant/antlib.xml"
|
|
uri="antlib:org.apache.ivy.ant_2">
|
|
<classpath>
|
|
<fileset dir="${artifacts.build.dir}/jars" includes="${final.name}"/>
|
|
<fileset dir="${build.dir}/lib" excludes="ant-*.jar"/>
|
|
</classpath>
|
|
</taskdef>
|
|
|
|
<property file="${user.home}/ivybuild.properties"/>
|
|
<input message="please enter your PGP password: " addproperty="pgp.password"/>
|
|
<input message="please enter your PGP keyId: " addproperty="pgp.keyId"/>
|
|
|
|
<input message="please enter your repository.apache.org username: " addproperty="upload.user"/>
|
|
<input message="please enter your repository.apache.org password: " addproperty="upload.password"/>
|
|
|
|
<ivy2:settings id="upload.settingsId" file="ivysettings-release.xml"/>
|
|
<ivy2:resolve file="${basedir}/build/artifact/ivy.xml" transitive="false"/>
|
|
<ivy2:publish organisation="org.apache.ivy"
|
|
module="ivy"
|
|
revision="${build.version}"
|
|
srcivypattern="${basedir}/build/artifact/ivy.xml"
|
|
artifactspattern="${basedir}/build/distrib/maven2/[revision]/[artifact]-[revision](-[classifier]).[ext]"
|
|
publishivy="false"
|
|
conf="core"
|
|
settingsRef="upload.settingsId"
|
|
resolver="nexus">
|
|
<!-- The standard maven2 artifacts -->
|
|
<artifact name="ivy" ext="pom" type="ivy"/>
|
|
<artifact name="ivy" ext="jar" type="sources" classifier="sources"/>
|
|
<artifact name="ivy" ext="jar" type="javadoc" classifier="javadoc"/>
|
|
<artifact name="ivy" ext="cdx.json" type="cyclonedx"/>
|
|
<artifact name="ivy" ext="cdx.xml" type="cyclonedx"/>
|
|
</ivy2:publish>
|
|
</target>
|
|
|
|
<target name="prepare-snapshot"
|
|
depends="/localivy,clean-ivy-home,clean,clean-lib,snapshot-version,install,clean-examples,test-report"/>
|
|
|
|
<target name="snapshot"
|
|
depends="prepare-snapshot,snapshot-src,snapshot-bin,snapshot-maven2,sboms,snapshot-checksums"
|
|
description="used for nightly and integration builds"/>
|
|
|
|
<target name="release"
|
|
depends="release-version,/localivy,clean-ivy-home,clean,clean-lib,rat,snapshot"
|
|
description="make a new release of Ivy"/>
|
|
|
|
<target name="tagsdoc" depends="generate-doc"
|
|
description="generate tagsdoc.properties file which can be used in IvyDE for code completion documentation">
|
|
<scriptdef name="generate-tagsdoc" language="javascript">
|
|
<element name="fileset" type="fileset"/>
|
|
<attribute name="destFile"/>
|
|
<![CDATA[
|
|
fs = elements.get("fileset").get(0);
|
|
srcDir = fs.getDir(project);
|
|
|
|
// Get the files (array) of that fileset
|
|
srcFiles = fs.getDirectoryScanner(project).getIncludedFiles();
|
|
|
|
// iterate over that array
|
|
print('processing ' + srcFiles.length + ' source files...');
|
|
|
|
var xpath = javax.xml.xpath.XPathFactory.newInstance().newXPath();
|
|
out = new java.io.FileWriter(self.getProject().resolveFile(attributes.get("destfile")));
|
|
for (i = 0; i < srcFiles.length; i++) {
|
|
try {
|
|
// get the values via Java API
|
|
var file = new java.io.File(srcDir, srcFiles[i]);
|
|
print('processing ' + file + '...');
|
|
|
|
inputSource = new org.xml.sax.InputSource(new java.io.FileInputStream(file));
|
|
|
|
dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance();
|
|
dbf.setValidating(false);
|
|
dbf.setIgnoringComments(false);
|
|
dbf.setIgnoringElementContentWhitespace(true);
|
|
dbf.setNamespaceAware(false);
|
|
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
|
|
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
|
|
builder = dbf.newDocumentBuilder();
|
|
document = builder.parse(inputSource);
|
|
|
|
var expression = "//span[contains(@class, 'ivysettings.')]";
|
|
var t = xpath.evaluate(expression, document, javax.xml.xpath.XPathConstants.NODE);
|
|
if (t == null) {
|
|
print('\tno tagdoc span found: ignored');
|
|
continue;
|
|
}
|
|
var id = t.getAttributes().getNamedItem("class").getTextContent();
|
|
|
|
out.write('##### ' + id + '\n');
|
|
out.write(id + ' = ' + t.getTextContent() + '\n');
|
|
|
|
text = (id === "ivysettings.resolvers") ? "Name" : "Attribute"
|
|
expression = "(//table/thead/tr/th[text()='" + text + "'])[1]/../../../tbody/tr/td[1]";
|
|
var atts = xpath.evaluate(expression, document, javax.xml.xpath.XPathConstants.NODESET);
|
|
for (j = 0; j < atts.getLength(); j++) {
|
|
name = atts.item(j).getTextContent().split(/[\s,]+/).pop()
|
|
out.write(id + '.@' + ((id === "ivysettings.resolvers") ? name.toLowerCase() : name) + ' = '
|
|
+ xpath.evaluate("../td[2]", atts.item(j), javax.xml.xpath.XPathConstants.NODE)
|
|
.getTextContent().replace(/\n/g, " ").replace(/[\x00-\x1F\xA0-\xE1\xE3-\xFF]/g, "") + '\n');
|
|
}
|
|
} catch (e) {
|
|
print('\terror: ' + e);
|
|
}
|
|
}
|
|
out.close();
|
|
]]>
|
|
</scriptdef>
|
|
<generate-tagsdoc destFile="tagsdoc.properties">
|
|
<fileset dir="${doc.build.dir}" includes="settings/**/*.html,resolver/**/*.html"/>
|
|
</generate-tagsdoc>
|
|
</target>
|
|
|
|
<target name="define-cyclonedx-components">
|
|
<ivy:cachepath organisation="org.apache.ant"
|
|
module="ant-cyclonedx"
|
|
revision="${ant-cyclonedx.version}"
|
|
inline="true" conf="default"
|
|
pathid="cyclonedx.classpath"
|
|
log="download-only"/>
|
|
<typedef uri="antlib:org.apache.ant.cyclonedx"
|
|
resource="org/apache/ant/cyclonedx/antlib.xml"
|
|
classpathref="cyclonedx.classpath"/>
|
|
|
|
<!-- common definitions for SBOMs -->
|
|
<cdx:organization
|
|
name="Apache Ant Project Management Committee"
|
|
id="ant-pmc"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<url url="https://ant.apache.org/"/>
|
|
</cdx:organization>
|
|
<cdx:license
|
|
licenseId="Apache-2.0"
|
|
id="apache-2"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<url url="https://www.apache.org/licenses/LICENSE-2.0.txt"/>
|
|
</cdx:license>
|
|
<cdx:externalreferenceset
|
|
id="ant-common-refs"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<externalReference
|
|
type="LICENSE"
|
|
url="https://www.apache.org/licenses/LICENSE-2.0.txt"/>
|
|
<externalReference
|
|
type="SECURITY_CONTACT"
|
|
url="https://www.apache.org/security/"/>
|
|
</cdx:externalreferenceset>
|
|
<cdx:externalreferenceset
|
|
id="ivy-ext-refs"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<externalReference
|
|
type="MAILING_LIST"
|
|
url="https://ant.apache.org/ivy/mailing-lists.html"/>
|
|
<externalReference
|
|
type="VCS"
|
|
url="https://gitbox.apache.org/repos/asf/ant-ivy.git"/>
|
|
<externalReference
|
|
type="BUILD_SYSTEM"
|
|
url="https://ci-builds.apache.org/job/Ant/job/Ivy/"/>
|
|
<externalReference
|
|
type="ISSUE_TRACKER"
|
|
url="http://issues.apache.org/jira/browse/IVY"/>
|
|
<externalReference
|
|
type="WEBSITE"
|
|
url="https://ant.apache.org/ivy/"/>
|
|
<externalReference
|
|
type="DISTRIBUTION"
|
|
url="https://ant.apache.org/ivy/download.cgi"/>
|
|
<externalReference
|
|
type="SOURCE_DISTRIBUTION"
|
|
url="https://ant.apache.org/ivy/download.cgi"/>
|
|
<externalReference
|
|
type="ADVISORIES"
|
|
url="https://ant.apache.org/ivy/security.html"/>
|
|
</cdx:externalreferenceset>
|
|
<cdx:externalreferenceset
|
|
id="ant-ext-refs"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<externalReference
|
|
type="MAILING_LIST"
|
|
url="https://ant.apache.org/mail.html"/>
|
|
<externalReference
|
|
type="VCS"
|
|
url="https://gitbox.apache.org/repos/asf/ant.git"/>
|
|
<externalReference
|
|
type="BUILD_SYSTEM"
|
|
url="https://ci-builds.apache.org/job/Ant/"/>
|
|
<externalReference
|
|
type="ISSUE_TRACKER"
|
|
url="https://bz.apache.org/bugzilla/buglist.cgi?product=Ant"/>
|
|
<externalReference
|
|
type="WEBSITE"
|
|
url="https://ant.apache.org/"/>
|
|
<externalReference
|
|
type="DISTRIBUTION"
|
|
url="https://ant.apache.org/bindownload.cgi"/>
|
|
<externalReference
|
|
type="SOURCE_DISTRIBUTION"
|
|
url="https://ant.apache.org/srcdownload.cgi"/>
|
|
<externalReference
|
|
type="ADVISORIES"
|
|
url="https://ant.apache.org/security.html#Apache%20Ant%20Security%20Vulnerabilities"/>
|
|
<externalReference
|
|
type="DOCUMENTATION"
|
|
url="https://ant.apache.org/manual/"/>
|
|
</cdx:externalreferenceset>
|
|
</target>
|
|
|
|
<target name="jar-sbom" depends="define-cyclonedx-components,jar">
|
|
<cdx:componentbom
|
|
bomName="ivy-${build.version}.cdx"
|
|
outputdirectory="${artifacts.build.dir}/jars"
|
|
format="all"
|
|
useComponentSupplier="true"
|
|
useComponentManufacturer="true"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<component
|
|
name="ivy"
|
|
group="org.apache.ivy"
|
|
version="${build.version}"
|
|
description="Apache Ivy"
|
|
publisher="The Apache Software Foundation"
|
|
supplierIsManufacturer="true">
|
|
<file file="${artifacts.build.dir}/jars/${final.name}"/>
|
|
<supplier refid="ant-pmc"/>
|
|
<license refid="apache-2"/>
|
|
<externalReferenceSet refid="ant-common-refs"/>
|
|
<externalReferenceSet refid="ivy-ext-refs"/>
|
|
<dependency componentRef="cdx-ant"/>
|
|
<dependency componentRef="cdx-httpclient"/>
|
|
<dependency componentRef="cdx-commons-compress"/>
|
|
<dependency componentRef="cdx-commons-vfs2"/>
|
|
<dependency componentRef="cdx-apache-oro"/>
|
|
<dependency componentRef="cdx-jsch"/>
|
|
<dependency componentRef="cdx-jsch.agentproxy"/>
|
|
<dependency componentRef="cdx-jsch.agentproxy.connector-factory"/>
|
|
<dependency componentRef="cdx-jsch.agentproxy.jsch"/>
|
|
<dependency componentRef="cdx-bcpg-jdk15on"/>
|
|
<dependency componentRef="cdx-bcprov-jdk15on"/>
|
|
<dependency componentRef="cdx-commons-codec"/>
|
|
</component>
|
|
<license refid="apache-2"/>
|
|
<additionalComponent
|
|
name="ant"
|
|
group="org.apache.ant"
|
|
version="${apache-ant.version}"
|
|
isExternal="true"
|
|
id="cdx-ant">
|
|
<supplier refid="ant-pmc"/>
|
|
<license refid="apache-2"/>
|
|
<externalReferenceSet refid="ant-common-refs"/>
|
|
<externalReferenceSet refid="ant-ext-refs"/>
|
|
<dependency componentRef="cdx-ant-launcher"/>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
name="ant-launcher"
|
|
group="org.apache.ant"
|
|
version="${apache-ant.version}"
|
|
isExternal="true"
|
|
id="cdx-ant-launcher">
|
|
<supplier refid="ant-pmc"/>
|
|
<license refid="apache-2"/>
|
|
<externalReferenceSet refid="ant-common-refs"/>
|
|
<externalReferenceSet refid="ant-ext-refs"/>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-httpclient"
|
|
name="httpclient"
|
|
group="org.apache.httpcomponents"
|
|
version="${httpclient.version}"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<license refid="apache-2"/>
|
|
<dependency componentRef="cdx-commons-codec"/>
|
|
<dependency componentRef="cdx-commons-logging"/>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-commons-logging"
|
|
name="commons-logging"
|
|
group="org.apache.commons"
|
|
version="1.2"
|
|
unknownDependencies="true"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<license refid="apache-2"/>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-commons-compress"
|
|
name="commons-compress"
|
|
group="org.apache.commons"
|
|
version="${commons-compress.version}"
|
|
unknownDependencies="true"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<license refid="apache-2"/>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-commons-vfs2"
|
|
name="commons-vfs2"
|
|
group="org.apache.commons"
|
|
version="${commons-vfs2.version}"
|
|
unknownDependencies="true"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<license refid="apache-2"/>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-apache-oro"
|
|
name="oro"
|
|
group="oro"
|
|
version="${oro.version}"
|
|
unknownDependencies="true"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<license refid="apache-2"/>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-jsch"
|
|
name="jsch"
|
|
group="com.jcraft"
|
|
description="JSch is a pure Java implementation of SSH2"
|
|
version="${jsch.version}"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<externalReference
|
|
type="WEBSITE"
|
|
url="http://www.jcraft.com/"/>
|
|
<license name="Revised BSD">
|
|
<url url="http://www.jcraft.com/jsch/LICENSE.txt"/>
|
|
</license>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-jsch.agentproxy"
|
|
name="jsch.agentproxy"
|
|
group="com.jcraft"
|
|
description="a proxy to ssh-agent and Pageant in Java "
|
|
version="${jsch.agentproxy.version}"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<externalReference
|
|
type="WEBSITE"
|
|
url="http://www.jcraft.com/"/>
|
|
<license name="Revised BSD">
|
|
<url url="http://www.jcraft.com/jsch/LICENSE.txt"/>
|
|
</license>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-jsch.agentproxy.connector-factory"
|
|
name="jsch.agentproxy.connector-factory"
|
|
group="com.jcraft"
|
|
description="a connector factory"
|
|
version="${jsch.agentproxy.version}"
|
|
unknownDependencies="true"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<externalReference
|
|
type="WEBSITE"
|
|
url="http://www.jcraft.com/"/>
|
|
<license name="Revised BSD">
|
|
<url url="http://www.jcraft.com/jsch/LICENSE.txt"/>
|
|
</license>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-jsch.agentproxy.jsch"
|
|
name="jsch.agentproxy.jsch"
|
|
group="com.jcraft"
|
|
description="a library to use jsch-agent-proxy with JSch"
|
|
version="${jsch.agentproxy.version}"
|
|
unknownDependencies="true"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<externalReference
|
|
type="WEBSITE"
|
|
url="http://www.jcraft.com/"/>
|
|
<license name="Revised BSD">
|
|
<url url="http://www.jcraft.com/jsch/LICENSE.txt"/>
|
|
</license>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-commons-codec"
|
|
name="commons-codec"
|
|
group="org.apache.commons"
|
|
version="${commons-codec.version}"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<license refid="apache-2"/>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-bcpg-jdk15on"
|
|
name="bcpg-jdk15on"
|
|
group="org.bouncycastle"
|
|
version="${bouncycastle.version}"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<license name="Bouncy Castle Licence">
|
|
<url url="https://www.bouncycastle.org/licence.html"/>
|
|
</license>
|
|
<dependency componentRef="cdx-bcprov-jdk15on"/>
|
|
</additionalComponent>
|
|
<additionalComponent
|
|
id="cdx-bcprov-jdk15on"
|
|
name="bcprov-jdk15on"
|
|
group="org.bouncycastle"
|
|
version="${bouncycastle.version}"
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<license name="Bouncy Castle Licence">
|
|
<url url="https://www.bouncycastle.org/licence.html"/>
|
|
</license>
|
|
</additionalComponent>
|
|
</cdx:componentbom>
|
|
</target>
|
|
|
|
<target name="prepare-distribution-sboms" depends="define-cyclonedx-components">
|
|
<macrodef name="create-tarball-bom">
|
|
<attribute name="binsrc"/>
|
|
<attribute name="binarysource"/>
|
|
<attribute name="ext"/>
|
|
<element name="archiveContent"/>
|
|
<element name="moreComponentChildren" optional="true"/>
|
|
<sequential
|
|
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
|
|
<cdx:componentbom
|
|
bomName="${snapshot.full.name}-@{binsrc}.@{ext}.cdx"
|
|
outputdirectory="${distrib.dir}/dist/${build.version}"
|
|
format="all"
|
|
useComponentManufacturer="true"
|
|
useComponentSupplier="true">
|
|
<component
|
|
version="${build.version}"
|
|
purl="https://archive.apache.org/dist/ant/ivy/${build.version}/${snapshot.full.name}-@{binsrc}.@{ext}"
|
|
name="https://archive.apache.org/dist/ant/ivy/${build.version}/${snapshot.full.name}-@{binsrc}.@{ext}"
|
|
description="Apache Ivy @{binarysource}"
|
|
publisher="The Apache Software Foundation"
|
|
type="file"
|
|
supplierIsManufacturer="true">
|
|
<file file="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-@{binsrc}.@{ext}"/>
|
|
<supplier refid="ant-pmc"/>
|
|
<license refid="apache-2"/>
|
|
<externalReferenceSet refid="ant-common-refs"/>
|
|
<externalReferenceSet refid="ivy-ext-refs"/>
|
|
<moreComponentChildren/>
|
|
</component>
|
|
<pureFileComponents>
|
|
<archiveContent/>
|
|
</pureFileComponents>
|
|
<license refid="apache-2"/>
|
|
</cdx:componentbom>
|
|
</sequential>
|
|
</macrodef>
|
|
<macrodef name="create-tarball-boms">
|
|
<attribute name="binsrc"/>
|
|
<attribute name="binarysource"/>
|
|
<element name="componentChildren" implicit="true" optional="true"/>
|
|
<sequential>
|
|
<mkdir dir="${build.dir}/sbom/@{binsrc}"/>
|
|
<unzip dest="${build.dir}/sbom/@{binsrc}"
|
|
src="${distrib.dir}/dist/${build.version}/${snapshot.full.name}-@{binsrc}.zip"/>
|
|
<create-tarball-bom
|
|
binsrc="@{binsrc}"
|
|
binarysource="@{binarysource}"
|
|
ext="tar.gz">
|
|
<moreComponentChildren>
|
|
<componentChildren/>
|
|
</moreComponentChildren>
|
|
<archiveContent>
|
|
<fileset dir="${build.dir}/sbom/@{binsrc}" defaultexcludes="no"/>
|
|
</archiveContent>
|
|
</create-tarball-bom>
|
|
<create-tarball-bom
|
|
binsrc="@{binsrc}"
|
|
binarysource="@{binarysource}"
|
|
ext="zip">
|
|
<moreComponentChildren>
|
|
<componentChildren/>
|
|
</moreComponentChildren>
|
|
<archiveContent>
|
|
<fileset dir="${build.dir}/sbom/@{binsrc}" defaultexcludes="no"/>
|
|
</archiveContent>
|
|
</create-tarball-bom>
|
|
<delete dir="${build.dir}/sbom/@{binsrc}"/>
|
|
</sequential>
|
|
</macrodef>
|
|
</target>
|
|
|
|
<target name="src-tarball-sboms"
|
|
depends="snapshot-src,prepare-distribution-sboms">
|
|
<create-tarball-boms binsrc="src" binarysource="Source Distribution"/>
|
|
</target>
|
|
|
|
<target name="bin-tarball-sboms"
|
|
depends="snapshot-bin,prepare-distribution-sboms">
|
|
<create-tarball-boms binsrc="bin"
|
|
binarysource="Binary Distribution">
|
|
<component>
|
|
<sbomLink>
|
|
<file file="${artifacts.build.dir}/jars/ivy-${build.version}.cdx.json"/>
|
|
</sbomLink>
|
|
<file file="${artifacts.build.dir}/jars/${final.name}"/>
|
|
</component>
|
|
</create-tarball-boms>
|
|
<create-tarball-boms binsrc="bin-with-deps"
|
|
binarysource="Binary Distribution with Dependencies">
|
|
<component>
|
|
<sbomLink>
|
|
<file file="${artifacts.build.dir}/jars/ivy-${build.version}.cdx.json"/>
|
|
</sbomLink>
|
|
<file file="${artifacts.build.dir}/jars/${final.name}"/>
|
|
</component>
|
|
</create-tarball-boms>
|
|
</target>
|
|
|
|
<target name="sboms" depends="src-tarball-sboms,bin-tarball-sboms"/>
|
|
</project>
|