moved ant tasks into subfolder
Project: http://git-wip-us.apache.org/repos/asf/maven-resolver/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-resolver/commit/a088cdfc Tree: http://git-wip-us.apache.org/repos/asf/maven-resolver/tree/a088cdfc Diff: http://git-wip-us.apache.org/repos/asf/maven-resolver/diff/a088cdfc Branch: refs/heads/ant-tasks-folder Commit: a088cdfca0366e468ba6ad30a1616ee64d2f898e Parents: dcdf1da Author: Manfred Moser <manf...@simpligility.com> Authored: Wed Nov 8 19:17:17 2017 -0800 Committer: Manfred Moser <manf...@simpligility.com> Committed: Wed Nov 8 19:17:17 2017 -0800 ---------------------------------------------------------------------- README.md | 243 ------ build.xml | 133 --- maven-resolver-ant-tasks/README.md | 243 ++++++ maven-resolver-ant-tasks/build.xml | 133 +++ maven-resolver-ant-tasks/pom.xml | 364 ++++++++ .../src/main/assembly/bin.xml | 47 ++ .../resolver/internal/ant/AetherUtils.java | 83 ++ .../maven/resolver/internal/ant/AntLogger.java | 68 ++ .../resolver/internal/ant/AntModelResolver.java | 180 ++++ .../maven/resolver/internal/ant/AntRepoSys.java | 825 +++++++++++++++++++ .../internal/ant/AntRepositoryListener.java | 123 +++ .../resolver/internal/ant/AntSecDispatcher.java | 45 + .../ant/AntServiceLocatorErrorHandler.java | 50 ++ .../ant/AntSettingsDecryptorFactory.java | 51 ++ .../internal/ant/AntTransferListener.java | 91 ++ .../resolver/internal/ant/ConverterUtils.java | 227 +++++ .../maven/resolver/internal/ant/Names.java | 44 + .../internal/ant/ProjectWorkspaceReader.java | 144 ++++ .../resolver/internal/ant/SettingsUtils.java | 182 ++++ .../internal/ant/tasks/AbstractDistTask.java | 180 ++++ .../ant/tasks/AbstractResolvingTask.java | 107 +++ .../ant/tasks/DependencyGraphLogger.java | 85 ++ .../resolver/internal/ant/tasks/Deploy.java | 104 +++ .../resolver/internal/ant/tasks/Install.java | 41 + .../resolver/internal/ant/tasks/Layout.java | 131 +++ .../resolver/internal/ant/tasks/RefTask.java | 98 +++ .../resolver/internal/ant/tasks/Resolve.java | 585 +++++++++++++ .../resolver/internal/ant/types/Artifact.java | 181 ++++ .../internal/ant/types/ArtifactContainer.java | 35 + .../resolver/internal/ant/types/Artifacts.java | 97 +++ .../internal/ant/types/Authentication.java | 152 ++++ .../internal/ant/types/Dependencies.java | 197 +++++ .../resolver/internal/ant/types/Dependency.java | 329 ++++++++ .../internal/ant/types/DependencyContainer.java | 31 + .../resolver/internal/ant/types/Exclusion.java | 190 +++++ .../internal/ant/types/LocalRepository.java | 90 ++ .../resolver/internal/ant/types/Mirror.java | 154 ++++ .../internal/ant/types/ModelValueExtractor.java | 99 +++ .../maven/resolver/internal/ant/types/Pom.java | 352 ++++++++ .../ant/types/PomPropertyEvaluator.java | 62 ++ .../internal/ant/types/PomPropertyHelper.java | 65 ++ .../resolver/internal/ant/types/Proxy.java | 163 ++++ .../internal/ant/types/RemoteRepositories.java | 97 +++ .../internal/ant/types/RemoteRepository.java | 351 ++++++++ .../ant/types/RemoteRepositoryContainer.java | 35 + .../resolver/internal/ant/types/Settings.java | 86 ++ .../org/apache/maven/resolver/ant/antlib.xml | 41 + .../src/site/markdown/index.md.vm | 1 + .../src/site/resources/download.cgi | 22 + maven-resolver-ant-tasks/src/site/site.xml | 42 + .../src/site/xdoc/download.xml.vm | 126 +++ .../resolver/internal/ant/AntBuildsTest.java | 124 +++ .../maven/resolver/internal/ant/DeployTest.java | 91 ++ .../resolver/internal/ant/InstallTest.java | 98 +++ .../ant/ProjectWorkspaceReaderTest.java | 124 +++ .../resolver/internal/ant/ReactorTest.java | 100 +++ .../resolver/internal/ant/ResolveTest.java | 150 ++++ .../resolver/internal/ant/SettingsTest.java | 65 ++ .../resolver/internal/ant/tasks/LayoutTest.java | 55 ++ .../internal/ant/types/DependencyTest.java | 88 ++ .../internal/ant/types/ExclusionTest.java | 88 ++ .../resolver/internal/ant/types/PomTest.java | 43 + .../ProjectWorkspaceReader/dummy-file.txt | 1 + .../ProjectWorkspaceReader/dummy-pom.xml | 34 + .../src/test/resources/ant/Deploy/ant.xml | 72 ++ .../src/test/resources/ant/Deploy/dummy-pom.xml | 34 + .../src/test/resources/ant/Deploy/other-pom.xml | 34 + .../src/test/resources/ant/Install/ant.xml | 71 ++ .../test/resources/ant/Install/dummy-pom.xml | 34 + .../test/resources/ant/Install/other-pom.xml | 34 + .../src/test/resources/ant/Reactor/ant.xml | 78 ++ .../src/test/resources/ant/Reactor/pom1.xml | 34 + .../src/test/resources/ant/Reactor/pom2.xml | 42 + .../src/test/resources/ant/Resolve/ant.xml | 122 +++ .../test/resources/ant/Resolve/dependencies.txt | 11 + .../test/resources/ant/Resolve/dummy-pom.xml | 34 + .../src/test/resources/ant/Resolve/pom.xml | 55 ++ .../src/test/resources/ant/Settings/ant.xml | 46 ++ .../src/test/resources/ant/common.xml | 20 + pom.xml | 364 -------- src/main/assembly/bin.xml | 47 -- .../resolver/internal/ant/AetherUtils.java | 83 -- .../maven/resolver/internal/ant/AntLogger.java | 68 -- .../resolver/internal/ant/AntModelResolver.java | 180 ---- .../maven/resolver/internal/ant/AntRepoSys.java | 825 ------------------- .../internal/ant/AntRepositoryListener.java | 123 --- .../resolver/internal/ant/AntSecDispatcher.java | 45 - .../ant/AntServiceLocatorErrorHandler.java | 50 -- .../ant/AntSettingsDecryptorFactory.java | 51 -- .../internal/ant/AntTransferListener.java | 91 -- .../resolver/internal/ant/ConverterUtils.java | 227 ----- .../maven/resolver/internal/ant/Names.java | 44 - .../internal/ant/ProjectWorkspaceReader.java | 144 ---- .../resolver/internal/ant/SettingsUtils.java | 182 ---- .../internal/ant/tasks/AbstractDistTask.java | 180 ---- .../ant/tasks/AbstractResolvingTask.java | 107 --- .../ant/tasks/DependencyGraphLogger.java | 85 -- .../resolver/internal/ant/tasks/Deploy.java | 104 --- .../resolver/internal/ant/tasks/Install.java | 41 - .../resolver/internal/ant/tasks/Layout.java | 131 --- .../resolver/internal/ant/tasks/RefTask.java | 98 --- .../resolver/internal/ant/tasks/Resolve.java | 585 ------------- .../resolver/internal/ant/types/Artifact.java | 181 ---- .../internal/ant/types/ArtifactContainer.java | 35 - .../resolver/internal/ant/types/Artifacts.java | 97 --- .../internal/ant/types/Authentication.java | 152 ---- .../internal/ant/types/Dependencies.java | 197 ----- .../resolver/internal/ant/types/Dependency.java | 329 -------- .../internal/ant/types/DependencyContainer.java | 31 - .../resolver/internal/ant/types/Exclusion.java | 190 ----- .../internal/ant/types/LocalRepository.java | 90 -- .../resolver/internal/ant/types/Mirror.java | 154 ---- .../internal/ant/types/ModelValueExtractor.java | 99 --- .../maven/resolver/internal/ant/types/Pom.java | 352 -------- .../ant/types/PomPropertyEvaluator.java | 62 -- .../internal/ant/types/PomPropertyHelper.java | 65 -- .../resolver/internal/ant/types/Proxy.java | 163 ---- .../internal/ant/types/RemoteRepositories.java | 97 --- .../internal/ant/types/RemoteRepository.java | 351 -------- .../ant/types/RemoteRepositoryContainer.java | 35 - .../resolver/internal/ant/types/Settings.java | 86 -- .../org/apache/maven/resolver/ant/antlib.xml | 41 - src/site/markdown/index.md.vm | 1 - src/site/resources/download.cgi | 22 - src/site/site.xml | 42 - src/site/xdoc/download.xml.vm | 126 --- .../resolver/internal/ant/AntBuildsTest.java | 124 --- .../maven/resolver/internal/ant/DeployTest.java | 91 -- .../resolver/internal/ant/InstallTest.java | 98 --- .../ant/ProjectWorkspaceReaderTest.java | 124 --- .../resolver/internal/ant/ReactorTest.java | 100 --- .../resolver/internal/ant/ResolveTest.java | 150 ---- .../resolver/internal/ant/SettingsTest.java | 65 -- .../resolver/internal/ant/tasks/LayoutTest.java | 55 -- .../internal/ant/types/DependencyTest.java | 88 -- .../internal/ant/types/ExclusionTest.java | 88 -- .../resolver/internal/ant/types/PomTest.java | 43 - .../ProjectWorkspaceReader/dummy-file.txt | 1 - .../ProjectWorkspaceReader/dummy-pom.xml | 34 - src/test/resources/ant/Deploy/ant.xml | 72 -- src/test/resources/ant/Deploy/dummy-pom.xml | 34 - src/test/resources/ant/Deploy/other-pom.xml | 34 - src/test/resources/ant/Install/ant.xml | 71 -- src/test/resources/ant/Install/dummy-pom.xml | 34 - src/test/resources/ant/Install/other-pom.xml | 34 - src/test/resources/ant/Reactor/ant.xml | 78 -- src/test/resources/ant/Reactor/pom1.xml | 34 - src/test/resources/ant/Reactor/pom2.xml | 42 - src/test/resources/ant/Resolve/ant.xml | 122 --- src/test/resources/ant/Resolve/dependencies.txt | 11 - src/test/resources/ant/Resolve/dummy-pom.xml | 34 - src/test/resources/ant/Resolve/pom.xml | 55 -- src/test/resources/ant/Settings/ant.xml | 46 -- src/test/resources/ant/common.xml | 20 - 154 files changed, 9011 insertions(+), 9011 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a088cdfc/README.md ---------------------------------------------------------------------- diff --git a/README.md b/README.md deleted file mode 100644 index bb228dc..0000000 --- a/README.md +++ /dev/null @@ -1,243 +0,0 @@ -# Maven Artifact Resolver Ant Tasks - -The Maven Artifact Resolver Ant Tasks enable build scripts for [Apache Ant](http://ant.apache.org/) 1.7+ to use -[Maven Artifact Resolver](/resolver/) combined to -[Apache Maven Artifact Resolver Provider](/ref/current/maven-resolver-provider/) to resolve dependencies -and install and deploy locally built artifacts. - -To integrate the tasks into your build file, copy the JAR into your project's lib directory and use the following -snippet to load it: - - <project xmlns:resolver="antlib:org.apache.maven.resolver.ant" ...> - <taskdef uri="antlib:org.apache.maven.resolver.ant" resource="org/apache/maven/resolver/ant/antlib.xml"> - <classpath> - <fileset dir="lib" includes="maven-resolver-ant-tasks-*.jar"/> - </classpath> - </taskdef> - ... - </project> - -See the `build.xml` in the project sources for a complete example build script. - -## Settings - -The Ant tasks are tightly integrated with the usual [Apache Maven settings.xml](/settings.html). -By default, the usual `${user.home}/.m2/settings.xml` is used for user settings. - -For the global settings, different paths will be tried: - -* `${ant.home}/etc/settings.xml` -* `${maven.home}/conf/settings.xml` -* `$M2_HOME/conf/settings.xml` - -The `<settings/>` definition is used to change that: - - <settings file="my-settings.xml" globalfile="myglobal-settings.xml"/> - -Some settings defined in the settings file or in the POM can also be changed inside the Ant file. - -### Proxy Settings - -Proxy definitions are used throughout the whole session. There may be multiple -proxies set. The proxy to use will be chosen by evaluating the `nonProxyHosts` on -each proxy definition, the first matching proxy will be used for a given remote connection. - - <proxy host="proxy.mycorp.com" port="8080" type="http" nonProxyHosts="127.*|localhost|*.mycorp.com"/> - -### Authentication - -Authentication elements are used to access remote repositories. Every -authentication definition will be added globally and chosen based on the -`servers` attribute. If this attribute is not set, an authentication has to be -referenced explicitly to be used. - - <authentication username="login" password="pw" id="auth"/> - <authentication privateKeyFile="file.pk" passphrase="phrase" servers="distrepo" id="distauth"/> - -### Local Repository - -Only one local repository can be used at a time. - - <localrepo dir="someDir"/> - -### Remote Repositories - -Remote repositories may be defined directly: - - <remoterepo id="ossrh" url="https://oss.sonatype.org/content/repositories/snapshots/" type="default" releases="false" snapshots="true" updates="always" checksums="fail"/> - - <remoterepo id="rao" url="https://repository.apache.org/content/groups/public/"> - <releases enabled="true" updates="daily" checksums="warn"/> - <snapshots enabled="false"/> - <authentication refid="auth"/> - </remoterepo> - - <remoterepo id="distrepo" url="..." authref="distauth"/> - -Multiple repositories may be used as a group in every place that is legal for a -remote repository: - - <remoterepos id="all"> - <remoterepo refid="ossrh"/> - <remoterepo refid="rao"/> - <remoterepo refid="distrepo"/> - </remoterepos> - -*Note:* Currently, only file:, http: and https: protocols are supported for remote repositories. - -### Mirrors - - <mirror id="" url="" mirrorOf=""/> - -### Offline Mode - -To suppress any network activity and only use already cached artifacts/metadata, you can use a boolean property: - - <property name="resolver.offline" value="true"/> - - -## Project - -Project settings deal with locally available information about the build. - -### POM - -The POM is the data type used to determine the target for the install and -deploy tasks. If you define a POM without an id based on a full `pom.xml` file, -that POM will be used by default for install and deploy. - - <pom file="pom.xml" id="pom"/> - <pom groupId="g" artifactId="a" version="v"/> - <pom coords="g:a:v"/> - -#### Properties - -If a POM is set via a file parameter its effective model is made available as properties to the Ant project. -The properties are prefixed with the ref id of the `<pom>` element, e.g. `${pom.version}` for the example above. -Likewise, project properties defined in the POM are accessible via the prefix `pom.properties.`. If no id has been -assigned, the properties use the prefix `pom.` by default. - -### Output Artifacts - -`<artifact>` elements define the artifacts produced by this build that should be installed or deployed. - - <artifact file="file-src.jar" type="jar" classifier="sources" id="src"/> - - <artifacts id="producedArtifacts"> - <artifact refid="src"/> - <artifact file="file-src.jar"/> - </artifacts> - -### Dependencies - -Dependencies are used to to create classpaths or filesets. They are used by -the `<resolve>`-task, which collects the artifacts belonging to the dependencies -transitively. - - <dependency coords="g:a:v:scope"/> - - <dependency groupId="g" artifactId="a" version="v" classifier="c" type="jar" scope="runtime"> - <exclusion coords="g:a"/> - <exclusion groupId="g" artifactId="a"/> - </dependency> - - <dependencies id="deps"> - <dependency refid="first"/> - <dependency refid="second"/> - <exclusion coords="g:a"/> <!-- global exclusion for all dependencies of this group --> - </dependencies> - - <dependencies> - <dependency coords="test:artifact:1.0:runtime"/> - <dependencies refid="deps"/> <!-- nested dependency collection merged into this one --> - </dependencies> - - <dependencies id="depsFromPom" pomRef="pom"/> - - <dependencies id="depsFromPlainTextFile" file="dependencies.txt"/> - <!-- - Each non-empty line of that text file declares one dependency, using the same syntax as for the `coords` attribute - of the `<dependency>` element, i.e. - <groupId>:<artifactId>:<version>[[:<type>[:<classifier>]]:<scope>] - Everything after the first hash (#) character on a line is considered a comment. - --> - - -## Tasks - -### Install - -You need to set a POM that references a file for the install task to work. - - <install artifactsref="producedArtifacts"/> - -### Deploy - -You need to set a POM that references a file for the deploy task to work, as that POM file will be deployed to repository. - - <deploy artifactsref="producedArtifacts"> - <remoterepo refid="distrepo"/> - <snapshotrepo refid="snaprepo"> - </deploy> - -### Resolve - -The `<resolve>`-task is used to collect and resolve dependencies from remote -servers. If no repositories are set explicitly for the task, the repositories -referenced by "resolver.repositories" are used. This contains only central by -default, but can be overridden by supplying another repository definition with -this id. - - -This task is able to assemble the collected dependencies in three different ways: - -* Classpath: The `<path>` element defines a classpath with all resolved dependencies. -* Files: `<files>` will assemble a resource collection containing all resolved dependencies and/or copy the files to some directory. -* Properties: `<properties>` will set properties with the given prefix and the coordinates to the path to the resolved file. - -These targets may also be mentioned more than once for the same resolve task, -but only one `<dependencies>` element is allowed. - - <resolve failOnMissingAttachments="true"> - <dependencies> - <dependency coords="org.apache.maven:maven-profile:2.0.6"/> - <exclusion artifactId="junit"/> - <exclusion groupId="org.codehaus.plexus"/> - </dependencies> - <path refid="cp" classpath="compile"/> - <files refid="src.files" attachments="sources" dir="target/sources" - layout="{artifactId}-{classifier}.{extension}"/> - <files refid="api.files" attachments="javadoc" dir="target/javadoc" - layout="{artifactId}-{classifier}.{extension}"/> - <properties prefix="dep." scopes="provided,system"/> - </resolve> - - <resolve dependenciesref="deps"> - <path refid="cp.compile" classpath="compile"/> - <path refid="cp.test" classpath="test"/> - </resolve> - -Scope filters can be set on every target, enumerating included and/or excluded -scope names. Exclusions are denoted by prefixing the scope name with `-` or `!` (e.g. `provided,!system`). - -The `classpath` attribute is a shortcut for the scope filters (e.g. -`classpath="compile"` equals `scope="provided,system,compile"`). Valid values are -"`compile`", "`runtime`", "`test`". - - <resolve> - <dependencies pomRef="pom"/> - <remoterepos refid="all"/> - <path refid="cp" classpath="compile"/> - <path refid="tp" classpath="test"/> - </resolve> - -The layout attribute of the `<files>` element is only allowed when the `dir` attribute is also given and recognizes the -following placeholders to refer to the coordinates of the currently processed artifact: - -* `{groupId}`, e.g. "org.apache.maven.resolver" -* `{groupIdDirs}`, e.g. "org/apache/maven/resolver" -* `{artifactId}`, e.g. "maven-resolver-api" -* `{version}`, e.g. "1.0.0-20140518.181353-123" -* `{baseVersion}`, e.g. "1.0.0-SNAPSHOT" -* `{extension}`, e.g. "jar" -* `{classifier}`, e.g. "sources" http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a088cdfc/build.xml ---------------------------------------------------------------------- diff --git a/build.xml b/build.xml deleted file mode 100644 index 86c441f..0000000 --- a/build.xml +++ /dev/null @@ -1,133 +0,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 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 - - http://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 xmlns:resolver="antlib:org.apache.maven.resolver.ant" default="deploy"> - - <!-- - This is an example Ant build file using the Maven Artifact Resolver Ant Tasks to compile, test, install and deploy the - maven-resolver-ant-tasks project itself. As a prerequisite, run "mvn package" first to assemble the - maven-resolver-ant-task.jar which this build file will load below. - --> - - <taskdef uri="antlib:org.apache.maven.resolver.ant" resource="org/apache/maven/resolver/ant/antlib.xml"> - <classpath> - <fileset dir="target" includes="maven-resolver-ant-tasks-*uber.jar"/> - </classpath> - </taskdef> - - <property name="build.dir" location="target/its"/> - - <resolver:localrepo dir="${build.dir}/local-repo"/> - - <resolver:remoterepo id="ossrh" url="http://oss.sonatype.org/content/groups/staging" type="default" - releases="true" snapshots="true" updates="daily" checksums="fail"/> - - <resolver:remoterepos id="resolver.repositories"> - <resolver:remoterepo refid="central"/> - <resolver:remoterepo refid="ossrh"/> - </resolver:remoterepos> - - <resolver:pom file="pom.xml" id="pom"/> - - <target name="clean"> - <delete dir="${build.dir}"/> - </target> - - <target name="process-resources"> - <copy todir="${build.dir}/classes"> - <fileset dir="src/main/resources"/> - </copy> - </target> - - <target name="compile" depends="process-resources"> - <mkdir dir="${build.dir}/classes"/> - - <resolver:resolve> - <dependencies> - <pom refid="pom"/> - </dependencies> - <path refid="cp.compile.main" classpath="compile"/> - </resolver:resolve> - - <javac classpathref="cp.compile.main" srcdir="src/main/java" destdir="${build.dir}/classes" - includeAntRuntime="false" source="1.5" target="1.5" encoding="UTF-8" fork="true"/> - </target> - - <target name="process-test-resources" depends="compile"> - </target> - - <target name="test-compile" depends="process-test-resources"> - <mkdir dir="${build.dir}/test-classes"/> - - <resolver:resolve> - <dependencies> - <pom refid="pom"/> - </dependencies> - <path refid="cp.compile.test" classpath="test"/> - <path refid="cp.runtime.test" scopes="compile,test"/> - </resolver:resolve> - - <path id="cp.test"> - <path refid="cp.compile.test"/> - <pathelement location="${build.dir}/classes"/> - </path> - - <javac classpathref="cp.test" srcdir="src/test/java" destdir="${build.dir}/test-classes" - includeAntRuntime="false" source="1.5" target="1.5" encoding="UTF-8" fork="true"/> - </target> - - <target name="test" depends="test-compile"> - <junit haltonfailure="true" fork="true" forkmode="once" outputtoformatters="false"> - <classpath> - <pathelement location="${build.dir}/test-classes"/> - <pathelement location="${build.dir}/classes"/> - <path refid="cp.runtime.test"/> - </classpath> - - <formatter type="brief" usefile="false"/> - - <batchtest> - <fileset dir="${build.dir}/test-classes" includes="**/*Test.class" excludes="**/AntBuildsTest*"/> - </batchtest> - </junit> - </target> - - <target name="package" depends="test"> - <jar destfile="${build.dir}/maven-resolver-ant-tasks-${pom.version}.jar" basedir="${build.dir}/classes"/> - <jar destfile="${build.dir}/maven-resolver-ant-tasks-${pom.version}-sources.jar" basedir="src/main/java"/> - - <resolver:artifacts id="output"> - <artifact file="${build.dir}/maven-resolver-ant-tasks-${pom.version}.jar"/> - <artifact file="${build.dir}/maven-resolver-ant-tasks-${pom.version}-sources.jar" classifier="sources"/> - </resolver:artifacts> - </target> - - <target name="install" depends="package"> - <resolver:install artifactsref="output"/> - </target> - - <target name="deploy" depends="install"> - <resolver:deploy artifactsref="output"> - <remoteRepo id="dist" url="file:///${build.dir}/dist-repo"/> - </resolver:deploy> - </target> - -</project> http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a088cdfc/maven-resolver-ant-tasks/README.md ---------------------------------------------------------------------- diff --git a/maven-resolver-ant-tasks/README.md b/maven-resolver-ant-tasks/README.md new file mode 100644 index 0000000..bb228dc --- /dev/null +++ b/maven-resolver-ant-tasks/README.md @@ -0,0 +1,243 @@ +# Maven Artifact Resolver Ant Tasks + +The Maven Artifact Resolver Ant Tasks enable build scripts for [Apache Ant](http://ant.apache.org/) 1.7+ to use +[Maven Artifact Resolver](/resolver/) combined to +[Apache Maven Artifact Resolver Provider](/ref/current/maven-resolver-provider/) to resolve dependencies +and install and deploy locally built artifacts. + +To integrate the tasks into your build file, copy the JAR into your project's lib directory and use the following +snippet to load it: + + <project xmlns:resolver="antlib:org.apache.maven.resolver.ant" ...> + <taskdef uri="antlib:org.apache.maven.resolver.ant" resource="org/apache/maven/resolver/ant/antlib.xml"> + <classpath> + <fileset dir="lib" includes="maven-resolver-ant-tasks-*.jar"/> + </classpath> + </taskdef> + ... + </project> + +See the `build.xml` in the project sources for a complete example build script. + +## Settings + +The Ant tasks are tightly integrated with the usual [Apache Maven settings.xml](/settings.html). +By default, the usual `${user.home}/.m2/settings.xml` is used for user settings. + +For the global settings, different paths will be tried: + +* `${ant.home}/etc/settings.xml` +* `${maven.home}/conf/settings.xml` +* `$M2_HOME/conf/settings.xml` + +The `<settings/>` definition is used to change that: + + <settings file="my-settings.xml" globalfile="myglobal-settings.xml"/> + +Some settings defined in the settings file or in the POM can also be changed inside the Ant file. + +### Proxy Settings + +Proxy definitions are used throughout the whole session. There may be multiple +proxies set. The proxy to use will be chosen by evaluating the `nonProxyHosts` on +each proxy definition, the first matching proxy will be used for a given remote connection. + + <proxy host="proxy.mycorp.com" port="8080" type="http" nonProxyHosts="127.*|localhost|*.mycorp.com"/> + +### Authentication + +Authentication elements are used to access remote repositories. Every +authentication definition will be added globally and chosen based on the +`servers` attribute. If this attribute is not set, an authentication has to be +referenced explicitly to be used. + + <authentication username="login" password="pw" id="auth"/> + <authentication privateKeyFile="file.pk" passphrase="phrase" servers="distrepo" id="distauth"/> + +### Local Repository + +Only one local repository can be used at a time. + + <localrepo dir="someDir"/> + +### Remote Repositories + +Remote repositories may be defined directly: + + <remoterepo id="ossrh" url="https://oss.sonatype.org/content/repositories/snapshots/" type="default" releases="false" snapshots="true" updates="always" checksums="fail"/> + + <remoterepo id="rao" url="https://repository.apache.org/content/groups/public/"> + <releases enabled="true" updates="daily" checksums="warn"/> + <snapshots enabled="false"/> + <authentication refid="auth"/> + </remoterepo> + + <remoterepo id="distrepo" url="..." authref="distauth"/> + +Multiple repositories may be used as a group in every place that is legal for a +remote repository: + + <remoterepos id="all"> + <remoterepo refid="ossrh"/> + <remoterepo refid="rao"/> + <remoterepo refid="distrepo"/> + </remoterepos> + +*Note:* Currently, only file:, http: and https: protocols are supported for remote repositories. + +### Mirrors + + <mirror id="" url="" mirrorOf=""/> + +### Offline Mode + +To suppress any network activity and only use already cached artifacts/metadata, you can use a boolean property: + + <property name="resolver.offline" value="true"/> + + +## Project + +Project settings deal with locally available information about the build. + +### POM + +The POM is the data type used to determine the target for the install and +deploy tasks. If you define a POM without an id based on a full `pom.xml` file, +that POM will be used by default for install and deploy. + + <pom file="pom.xml" id="pom"/> + <pom groupId="g" artifactId="a" version="v"/> + <pom coords="g:a:v"/> + +#### Properties + +If a POM is set via a file parameter its effective model is made available as properties to the Ant project. +The properties are prefixed with the ref id of the `<pom>` element, e.g. `${pom.version}` for the example above. +Likewise, project properties defined in the POM are accessible via the prefix `pom.properties.`. If no id has been +assigned, the properties use the prefix `pom.` by default. + +### Output Artifacts + +`<artifact>` elements define the artifacts produced by this build that should be installed or deployed. + + <artifact file="file-src.jar" type="jar" classifier="sources" id="src"/> + + <artifacts id="producedArtifacts"> + <artifact refid="src"/> + <artifact file="file-src.jar"/> + </artifacts> + +### Dependencies + +Dependencies are used to to create classpaths or filesets. They are used by +the `<resolve>`-task, which collects the artifacts belonging to the dependencies +transitively. + + <dependency coords="g:a:v:scope"/> + + <dependency groupId="g" artifactId="a" version="v" classifier="c" type="jar" scope="runtime"> + <exclusion coords="g:a"/> + <exclusion groupId="g" artifactId="a"/> + </dependency> + + <dependencies id="deps"> + <dependency refid="first"/> + <dependency refid="second"/> + <exclusion coords="g:a"/> <!-- global exclusion for all dependencies of this group --> + </dependencies> + + <dependencies> + <dependency coords="test:artifact:1.0:runtime"/> + <dependencies refid="deps"/> <!-- nested dependency collection merged into this one --> + </dependencies> + + <dependencies id="depsFromPom" pomRef="pom"/> + + <dependencies id="depsFromPlainTextFile" file="dependencies.txt"/> + <!-- + Each non-empty line of that text file declares one dependency, using the same syntax as for the `coords` attribute + of the `<dependency>` element, i.e. + <groupId>:<artifactId>:<version>[[:<type>[:<classifier>]]:<scope>] + Everything after the first hash (#) character on a line is considered a comment. + --> + + +## Tasks + +### Install + +You need to set a POM that references a file for the install task to work. + + <install artifactsref="producedArtifacts"/> + +### Deploy + +You need to set a POM that references a file for the deploy task to work, as that POM file will be deployed to repository. + + <deploy artifactsref="producedArtifacts"> + <remoterepo refid="distrepo"/> + <snapshotrepo refid="snaprepo"> + </deploy> + +### Resolve + +The `<resolve>`-task is used to collect and resolve dependencies from remote +servers. If no repositories are set explicitly for the task, the repositories +referenced by "resolver.repositories" are used. This contains only central by +default, but can be overridden by supplying another repository definition with +this id. + + +This task is able to assemble the collected dependencies in three different ways: + +* Classpath: The `<path>` element defines a classpath with all resolved dependencies. +* Files: `<files>` will assemble a resource collection containing all resolved dependencies and/or copy the files to some directory. +* Properties: `<properties>` will set properties with the given prefix and the coordinates to the path to the resolved file. + +These targets may also be mentioned more than once for the same resolve task, +but only one `<dependencies>` element is allowed. + + <resolve failOnMissingAttachments="true"> + <dependencies> + <dependency coords="org.apache.maven:maven-profile:2.0.6"/> + <exclusion artifactId="junit"/> + <exclusion groupId="org.codehaus.plexus"/> + </dependencies> + <path refid="cp" classpath="compile"/> + <files refid="src.files" attachments="sources" dir="target/sources" + layout="{artifactId}-{classifier}.{extension}"/> + <files refid="api.files" attachments="javadoc" dir="target/javadoc" + layout="{artifactId}-{classifier}.{extension}"/> + <properties prefix="dep." scopes="provided,system"/> + </resolve> + + <resolve dependenciesref="deps"> + <path refid="cp.compile" classpath="compile"/> + <path refid="cp.test" classpath="test"/> + </resolve> + +Scope filters can be set on every target, enumerating included and/or excluded +scope names. Exclusions are denoted by prefixing the scope name with `-` or `!` (e.g. `provided,!system`). + +The `classpath` attribute is a shortcut for the scope filters (e.g. +`classpath="compile"` equals `scope="provided,system,compile"`). Valid values are +"`compile`", "`runtime`", "`test`". + + <resolve> + <dependencies pomRef="pom"/> + <remoterepos refid="all"/> + <path refid="cp" classpath="compile"/> + <path refid="tp" classpath="test"/> + </resolve> + +The layout attribute of the `<files>` element is only allowed when the `dir` attribute is also given and recognizes the +following placeholders to refer to the coordinates of the currently processed artifact: + +* `{groupId}`, e.g. "org.apache.maven.resolver" +* `{groupIdDirs}`, e.g. "org/apache/maven/resolver" +* `{artifactId}`, e.g. "maven-resolver-api" +* `{version}`, e.g. "1.0.0-20140518.181353-123" +* `{baseVersion}`, e.g. "1.0.0-SNAPSHOT" +* `{extension}`, e.g. "jar" +* `{classifier}`, e.g. "sources" http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a088cdfc/maven-resolver-ant-tasks/build.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-ant-tasks/build.xml b/maven-resolver-ant-tasks/build.xml new file mode 100644 index 0000000..86c441f --- /dev/null +++ b/maven-resolver-ant-tasks/build.xml @@ -0,0 +1,133 @@ +<?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 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 + + http://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 xmlns:resolver="antlib:org.apache.maven.resolver.ant" default="deploy"> + + <!-- + This is an example Ant build file using the Maven Artifact Resolver Ant Tasks to compile, test, install and deploy the + maven-resolver-ant-tasks project itself. As a prerequisite, run "mvn package" first to assemble the + maven-resolver-ant-task.jar which this build file will load below. + --> + + <taskdef uri="antlib:org.apache.maven.resolver.ant" resource="org/apache/maven/resolver/ant/antlib.xml"> + <classpath> + <fileset dir="target" includes="maven-resolver-ant-tasks-*uber.jar"/> + </classpath> + </taskdef> + + <property name="build.dir" location="target/its"/> + + <resolver:localrepo dir="${build.dir}/local-repo"/> + + <resolver:remoterepo id="ossrh" url="http://oss.sonatype.org/content/groups/staging" type="default" + releases="true" snapshots="true" updates="daily" checksums="fail"/> + + <resolver:remoterepos id="resolver.repositories"> + <resolver:remoterepo refid="central"/> + <resolver:remoterepo refid="ossrh"/> + </resolver:remoterepos> + + <resolver:pom file="pom.xml" id="pom"/> + + <target name="clean"> + <delete dir="${build.dir}"/> + </target> + + <target name="process-resources"> + <copy todir="${build.dir}/classes"> + <fileset dir="src/main/resources"/> + </copy> + </target> + + <target name="compile" depends="process-resources"> + <mkdir dir="${build.dir}/classes"/> + + <resolver:resolve> + <dependencies> + <pom refid="pom"/> + </dependencies> + <path refid="cp.compile.main" classpath="compile"/> + </resolver:resolve> + + <javac classpathref="cp.compile.main" srcdir="src/main/java" destdir="${build.dir}/classes" + includeAntRuntime="false" source="1.5" target="1.5" encoding="UTF-8" fork="true"/> + </target> + + <target name="process-test-resources" depends="compile"> + </target> + + <target name="test-compile" depends="process-test-resources"> + <mkdir dir="${build.dir}/test-classes"/> + + <resolver:resolve> + <dependencies> + <pom refid="pom"/> + </dependencies> + <path refid="cp.compile.test" classpath="test"/> + <path refid="cp.runtime.test" scopes="compile,test"/> + </resolver:resolve> + + <path id="cp.test"> + <path refid="cp.compile.test"/> + <pathelement location="${build.dir}/classes"/> + </path> + + <javac classpathref="cp.test" srcdir="src/test/java" destdir="${build.dir}/test-classes" + includeAntRuntime="false" source="1.5" target="1.5" encoding="UTF-8" fork="true"/> + </target> + + <target name="test" depends="test-compile"> + <junit haltonfailure="true" fork="true" forkmode="once" outputtoformatters="false"> + <classpath> + <pathelement location="${build.dir}/test-classes"/> + <pathelement location="${build.dir}/classes"/> + <path refid="cp.runtime.test"/> + </classpath> + + <formatter type="brief" usefile="false"/> + + <batchtest> + <fileset dir="${build.dir}/test-classes" includes="**/*Test.class" excludes="**/AntBuildsTest*"/> + </batchtest> + </junit> + </target> + + <target name="package" depends="test"> + <jar destfile="${build.dir}/maven-resolver-ant-tasks-${pom.version}.jar" basedir="${build.dir}/classes"/> + <jar destfile="${build.dir}/maven-resolver-ant-tasks-${pom.version}-sources.jar" basedir="src/main/java"/> + + <resolver:artifacts id="output"> + <artifact file="${build.dir}/maven-resolver-ant-tasks-${pom.version}.jar"/> + <artifact file="${build.dir}/maven-resolver-ant-tasks-${pom.version}-sources.jar" classifier="sources"/> + </resolver:artifacts> + </target> + + <target name="install" depends="package"> + <resolver:install artifactsref="output"/> + </target> + + <target name="deploy" depends="install"> + <resolver:deploy artifactsref="output"> + <remoteRepo id="dist" url="file:///${build.dir}/dist-repo"/> + </resolver:deploy> + </target> + +</project> http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a088cdfc/maven-resolver-ant-tasks/pom.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-ant-tasks/pom.xml b/maven-resolver-ant-tasks/pom.xml new file mode 100644 index 0000000..85edc0d --- /dev/null +++ b/maven-resolver-ant-tasks/pom.xml @@ -0,0 +1,364 @@ +<?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 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 + + http://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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.maven</groupId> + <artifactId>maven-parent</artifactId> + <version>30</version> + <relativePath>../pom/maven/pom.xml</relativePath> + </parent> + + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-ant-tasks</artifactId> + <version>1.1.0-SNAPSHOT</version> + + <name>Maven Artifact Resolver Ant Tasks</name> + <description> + Ant tasks handling Maven artifacts using Maven Artifact Resolver and Maven Artifact Resolver Provider. + </description> + <url>https://maven.apache.org/resolver-ant-tasks/</url> + <inceptionYear>2010</inceptionYear> + + <scm> + <connection>scm:git:https://git-wip-us.apache.org/repos/asf/maven-resolver.git</connection> + <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/maven-resolver.git</developerConnection> + <url>https://github.com/apache/maven-resolver/tree/${project.scm.tag}</url> + <tag>ant-tasks</tag> + </scm> + <issueManagement> + <system>jira</system> + <url>https://issues.apache.org/jira/browse/MRESOLVER</url> + </issueManagement> + <ciManagement> + <system>Jenkins</system> + <url>https://builds.apache.org/job/maven-resolver-ant-tasks</url> + </ciManagement> + <distributionManagement> + <site> + <id>apache.website</id> + <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/components/${maven.site.path}</url> + </site> + </distributionManagement> + + <properties> + <mavenVersion>3.5.0</mavenVersion> + <resolverVersion>1.0.3</resolverVersion> + <javaVersion>7</javaVersion> + <maven.site.path>resolver-archives/resolver-ant-tasks-LATEST</maven.site.path> + <checkstyle.violation.ignore>LineLength,MagicNumber</checkstyle.violation.ignore> + </properties> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + <version>3.0.24</version> + </dependency> + <dependency> + <groupId>org.sonatype.plexus</groupId> + <artifactId>plexus-cipher</artifactId> + <version>1.7</version> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <!-- NOTE: The target runtime is actually Ant 1.7+ but for compilation we need some newer APIs --> + <groupId>org.apache.ant</groupId> + <artifactId>ant</artifactId> + <version>1.8.2</version> + <scope>provided</scope> + <exclusions> + <exclusion> + <groupId>org.apache.ant</groupId> + <artifactId>ant-launcher</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-api</artifactId> + <version>${resolverVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-util</artifactId> + <version>${resolverVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-impl</artifactId> + <version>${resolverVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-connector-basic</artifactId> + <version>${resolverVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-transport-classpath</artifactId> + <version>${resolverVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-transport-file</artifactId> + <version>${resolverVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-transport-http</artifactId> + <version>${resolverVersion}</version> + </dependency> + <dependency> + <!-- This shuts off annoying warnings from slf4j-api --> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-nop</artifactId> + <version>1.6.2</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-resolver-provider</artifactId> + <version>${mavenVersion}</version> + <exclusions> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-annotations</artifactId> + </exclusion> + <exclusion> + <groupId>org.eclipse.sisu</groupId> + <artifactId>org.eclipse.sisu.plexus</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-settings-builder</artifactId> + <version>${mavenVersion}</version> + <exclusions> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-annotations</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-annotations</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-interpolation</artifactId> + <version>1.16</version> + </dependency> + <dependency> + <groupId>org.eclipse.sisu</groupId> + <artifactId>org.eclipse.sisu.plexus</artifactId> + <version>0.1.1</version> + <exclusions> + <exclusion> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + </exclusion> + <exclusion> + <groupId>javax.enterprise</groupId> + <artifactId>cdi-api</artifactId> + </exclusion> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-classworlds</artifactId> + </exclusion> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </exclusion> + <exclusion> + <groupId>org.eclipse.sisu</groupId> + <artifactId>org.eclipse.sisu.inject</artifactId> + </exclusion> + <exclusion> + <groupId>org.sonatype.sisu</groupId> + <artifactId>sisu-guice</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant-testutil</artifactId> + <version>1.8.2</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant-launcher</artifactId> + <version>1.8.2</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-library</artifactId> + <version>1.3</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-core</artifactId> + <version>1.3</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-test-util</artifactId> + <version>${resolverVersion}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <configuration> + <excludes combine.children="append"> + <exclude>src/test/resources/**/*.txt</exclude> + <exclude>README.md</exclude> + <exclude>src/site/markdown/**/*.md.vm</exclude> + </excludes> + </configuration> + </plugin> + <plugin> + <artifactId>maven-shade-plugin</artifactId> + <version>2.4.3</version> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <createDependencyReducedPom>false</createDependencyReducedPom> + <shadedArtifactAttached>true</shadedArtifactAttached> + <shadedClassifierName>uber</shadedClassifierName> + <filters> + <filter> + <artifact>org.eclipse.sisu:org.eclipse.sisu.plexus</artifact> + <includes> + <include>org/codehaus/plexus/logging/*LogEnabled*</include> + <include>org/codehaus/plexus/logging/Logger*</include> + </includes> + </filter> + <filter> + <artifact>*:*</artifact> + <excludes> + <exclude>licenses/**</exclude> + </excludes> + </filter> + </filters> + <transformers> + <transformer implementation="org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformer" /> + </transformers> + <relocations> + <relocation> + <pattern>org.eclipse.aether</pattern> + <shadedPattern>org.apache.maven.resolver.internal.ant.org.eclipse.aether</shadedPattern> + <excludes> + <exclude>org.eclipse.aether.ant.**</exclude> + </excludes> + </relocation> + <relocation> + <pattern>org.sonatype.plexus</pattern> + <shadedPattern>org.apache.maven.resolver.internal.ant.org.sonatype.plexus</shadedPattern> + </relocation> + <relocation> + <pattern>org.apache</pattern> + <shadedPattern>org.apache.maven.resolver.internal.ant.org.apache</shadedPattern> + <excludes> + <exclude>org.apache.tools.**</exclude> + <exclude>org.apache.maven.aether.**</exclude> + </excludes> + </relocation> + <relocation> + <pattern>org.codehaus</pattern> + <shadedPattern>org.apache.maven.resolver.internal.ant.org.codehaus</shadedPattern> + </relocation> + <relocation> + <pattern>org.slf4j</pattern> + <shadedPattern>org.apache.maven.resolver.internal.ant.org.slf4j</shadedPattern> + </relocation> + </relocations> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>run-its</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <version>1.6</version> + <executions> + <execution> + <id>smoke-test</id> + <phase>integration-test</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <target> + <ant antfile="build.xml" /> + </target> + </configuration> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant-junit</artifactId> + <version>1.8.2</version> + </dependency> + </dependencies> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a088cdfc/maven-resolver-ant-tasks/src/main/assembly/bin.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-ant-tasks/src/main/assembly/bin.xml b/maven-resolver-ant-tasks/src/main/assembly/bin.xml new file mode 100644 index 0000000..a2df39b --- /dev/null +++ b/maven-resolver-ant-tasks/src/main/assembly/bin.xml @@ -0,0 +1,47 @@ +<?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 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 + + http://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. +--> + +<assembly> + <id>bin</id> + <formats> + <format>zip</format> + </formats> + <fileSets> + <fileSet> + <directory>target</directory> + <outputDirectory>.</outputDirectory> + <includes> + <include>*-uber.jar</include> + <include>*-uber.jar.asc</include> + </includes> + <excludes> + <exclude>*-sources.*</exclude> + <exclude>*-javadoc.*</exclude> + </excludes> + </fileSet> + <fileSet> + <directory>.</directory> + <includes> + <include>*.html</include> + </includes> + </fileSet> + </fileSets> +</assembly> http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a088cdfc/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AetherUtils.java ---------------------------------------------------------------------- diff --git a/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AetherUtils.java b/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AetherUtils.java new file mode 100644 index 0000000..6b59f90 --- /dev/null +++ b/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AetherUtils.java @@ -0,0 +1,83 @@ +package org.apache.maven.resolver.internal.ant; + +/* + * 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 + * + * http://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. + */ + +import java.io.File; + +import org.apache.maven.resolver.internal.ant.types.RemoteRepositories; +import org.apache.tools.ant.Project; + +class AetherUtils +{ + + public static File findGlobalSettings( Project project ) + { + File file = new File( new File( project.getProperty( "ant.home" ), "etc" ), Names.SETTINGS_XML ); + if ( file.isFile() ) + { + return file; + } + else + { + String mavenHome = getMavenHome( project ); + if ( mavenHome != null ) + { + return new File( new File( mavenHome, "conf" ), Names.SETTINGS_XML ); + } + } + + return null; + } + + public static String getMavenHome( Project project ) + { + String mavenHome = project.getProperty( "maven.home" ); + if ( mavenHome != null ) + { + return mavenHome; + } + return System.getenv( "M2_HOME" ); + } + + public static File findUserSettings( Project project ) + { + File userHome = new File( project.getProperty( "user.home" ) ); + File file = new File( new File( userHome, ".ant" ), Names.SETTINGS_XML ); + if ( file.isFile() ) + { + return file; + } + else + { + return new File( new File( userHome, ".m2" ), Names.SETTINGS_XML ); + } + } + + public static RemoteRepositories getDefaultRepositories( Project project ) + { + Object obj = project.getReference( Names.ID_DEFAULT_REPOS ); + if ( obj instanceof RemoteRepositories ) + { + return (RemoteRepositories) obj; + } + return null; + } + +} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a088cdfc/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AntLogger.java ---------------------------------------------------------------------- diff --git a/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AntLogger.java b/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AntLogger.java new file mode 100644 index 0000000..711d653 --- /dev/null +++ b/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AntLogger.java @@ -0,0 +1,68 @@ +package org.apache.maven.resolver.internal.ant; + +/* + * 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 + * + * http://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. + */ + +import org.apache.tools.ant.Project; +import org.eclipse.aether.spi.log.Logger; + +/** + */ +class AntLogger + implements Logger +{ + + private Project project; + + public AntLogger( Project project ) + { + this.project = project; + } + + public void debug( String msg ) + { + project.log( msg, Project.MSG_DEBUG ); + } + + public void debug( String msg, Throwable error ) + { + project.log( msg, error, Project.MSG_DEBUG ); + } + + public boolean isDebugEnabled() + { + return true; + } + + public boolean isWarnEnabled() + { + return true; + } + + public void warn( String msg ) + { + project.log( msg, Project.MSG_WARN ); + } + + public void warn( String msg, Throwable error ) + { + project.log( msg, error, Project.MSG_WARN ); + } + +} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a088cdfc/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AntModelResolver.java ---------------------------------------------------------------------- diff --git a/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AntModelResolver.java b/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AntModelResolver.java new file mode 100644 index 0000000..43b64f7 --- /dev/null +++ b/maven-resolver-ant-tasks/src/main/java/org/apache/maven/resolver/internal/ant/AntModelResolver.java @@ -0,0 +1,180 @@ +package org.apache.maven.resolver.internal.ant; + +/* + * 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 + * + * http://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. + */ + +import java.io.File; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.apache.maven.model.Dependency; +import org.apache.maven.model.Parent; +import org.apache.maven.model.Repository; +import org.apache.maven.model.building.FileModelSource; +import org.apache.maven.model.building.ModelSource; +import org.apache.maven.model.resolution.InvalidRepositoryException; +import org.apache.maven.model.resolution.ModelResolver; +import org.apache.maven.model.resolution.UnresolvableModelException; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.impl.RemoteRepositoryManager; +import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.repository.RepositoryPolicy; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResolutionException; + +/** + * A model resolver to assist building of dependency POMs. This resolver gives priority to those repositories that have + * been initially specified and repositories discovered in dependency POMs are recessively merged into the search chain. + * + */ +class AntModelResolver + implements ModelResolver +{ + + private final RepositorySystemSession session; + + private final String context; + + private List<org.eclipse.aether.repository.RemoteRepository> repositories; + + private final RepositorySystem repoSys; + + private final RemoteRepositoryManager remoteRepositoryManager; + + private final Set<String> repositoryIds; + + public AntModelResolver( RepositorySystemSession session, String context, RepositorySystem repoSys, + RemoteRepositoryManager remoteRepositoryManager, List<RemoteRepository> repositories ) + { + this.session = session; + this.context = context; + this.repoSys = repoSys; + this.remoteRepositoryManager = remoteRepositoryManager; + this.repositories = repositories; + this.repositoryIds = new HashSet<String>(); + } + + private AntModelResolver( AntModelResolver original ) + { + this.session = original.session; + this.context = original.context; + this.repoSys = original.repoSys; + this.remoteRepositoryManager = original.remoteRepositoryManager; + this.repositories = original.repositories; + this.repositoryIds = new HashSet<String>( original.repositoryIds ); + } + + public void addRepository( Repository repository ) + throws InvalidRepositoryException + { + if ( !repositoryIds.add( repository.getId() ) ) + { + return; + } + + List<RemoteRepository> newRepositories = Collections.singletonList( convert( repository ) ); + + this.repositories = + remoteRepositoryManager.aggregateRepositories( session, repositories, newRepositories, true ); + } + + static RemoteRepository convert( Repository repository ) + { + RemoteRepository.Builder builder = + new RemoteRepository.Builder( repository.getId(), repository.getLayout(), repository.getUrl() ); + builder.setSnapshotPolicy( convert( repository.getSnapshots() ) ); + builder.setReleasePolicy( convert( repository.getReleases() ) ); + return builder.build(); + } + + private static RepositoryPolicy convert( org.apache.maven.model.RepositoryPolicy policy ) + { + boolean enabled = true; + String checksums = RepositoryPolicy.CHECKSUM_POLICY_WARN; + String updates = RepositoryPolicy.UPDATE_POLICY_DAILY; + + if ( policy != null ) + { + enabled = policy.isEnabled(); + if ( policy.getUpdatePolicy() != null ) + { + updates = policy.getUpdatePolicy(); + } + if ( policy.getChecksumPolicy() != null ) + { + checksums = policy.getChecksumPolicy(); + } + } + + return new RepositoryPolicy( enabled, updates, checksums ); + } + + public ModelResolver newCopy() + { + return new AntModelResolver( this ); + } + + public ModelSource resolveModel( String groupId, String artifactId, String version ) + throws UnresolvableModelException + { + Artifact pomArtifact = new DefaultArtifact( groupId, artifactId, "", "pom", version ); + + try + { + ArtifactRequest request = new ArtifactRequest( pomArtifact, repositories, context ); + pomArtifact = repoSys.resolveArtifact( session, request ).getArtifact(); + } + catch ( ArtifactResolutionException e ) + { + throw new UnresolvableModelException( "Failed to resolve POM for " + groupId + ":" + artifactId + ":" + + version + " due to " + e.getMessage(), groupId, artifactId, version, e ); + } + + File pomFile = pomArtifact.getFile(); + + return new FileModelSource( pomFile ); + } + + @Override + public ModelSource resolveModel( Parent parent ) + throws UnresolvableModelException + { + return resolveModel( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() ); + } + + @Override + public ModelSource resolveModel( Dependency dependency ) + throws UnresolvableModelException + { + return resolveModel( dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() ); + } + + @Override + public void addRepository( Repository repository, boolean replace ) + throws InvalidRepositoryException + { + addRepository( repository ); + } + +}