Maven Artifact Resolver Ant 任务使Apache Ant 1.7+ 的构建脚本能够使用结合Apache Maven Artifact Resolver Provider的 Maven Artifact Resolver来解决依赖关系并安装和部署本地构建的工件。
要将任务集成到构建文件中,请将 Über JAR 复制到项目的 lib 目录中并使用以下代码段加载它:
<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="lib/maven-resolver-ant-tasks-1.4.0-uber.jar" />
...
</project>
请参阅项目源代码中的build.xml以获取完整的示例构建脚本。
Ant 任务与通常的Apache Maven settings.xml紧密集成。默认情况下,通常的${user.home}/.m2/settings.xml用于用户设置。
对于全局设置,将尝试不同的路径:
< settings/>定义用于更改:
<settings file="my-settings.xml" globalfile="myglobal-settings.xml"/>
在设置文件或 POM 中定义的一些设置也可以在 Ant 文件中更改。
代理定义在整个会话中使用。可能设置了多个代理。将通过评估每个代理定义上的nonProxyHosts来选择要使用的代理,第一个匹配的代理将用于给定的远程连接。
<proxy host="proxy.mycorp.com" port="8080" type="http" nonProxyHosts="127.*|localhost|*.mycorp.com"/>
身份验证元素用于访问远程存储库。每个身份验证定义都将全局添加并根据服务器属性进行选择。如果未设置此属性,则必须明确引用身份验证才能使用。
<authentication username="login" password="pw" id="auth"/> <authentication privateKeyFile="file.pk" passphrase="phrase" servers="distrepo" id="distauth"/>
一次只能使用一个本地存储库。
<localrepo dir="someDir"/>
可以直接定义远程存储库:
<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"/>
多个存储库可以在每个对远程存储库合法的地方作为一个组使用:
<remoterepos id="all">
<remoterepo refid="ossrh"/>
<remoterepo refid="rao"/>
<remoterepo refid="distrepo"/>
</remoterepos>
注意:目前,远程存储库仅支持 file:、http: 和 https: 协议。
<mirror id="" url="" mirrorOf=""/>
要抑制任何网络活动并仅使用已缓存的工件/元数据,您可以使用布尔属性:
<property name="resolver.offline" value="true"/>
项目设置处理有关构建的本地可用信息。
POM 是用于确定安装和部署任务目标的数据类型。如果您基于完整的pom.xml文件定义没有 id 的 POM,则默认情况下将使用该 POM 进行安装和部署。
<pom file="pom.xml" id="pom"/> <pom groupId="g" artifactId="a" version="v"/> <pom coords="g:a:v"/>
如果通过文件参数设置 POM,则其有效模型可作为 Ant 项目的属性使用。属性以<pom>元素的 ref id 为前缀,例如上面示例的${pom.version}。同样,POM 中定义的项目属性可以通过前缀pom.properties 访问。. 如果没有分配 id,则属性使用前缀pom。默认。
<artifact>元素定义应安装或部署的此构建生成的工件。
<artifact file="file-src.jar" type="jar" classifier="sources" id="src"/>
<artifacts id="producedArtifacts">
<artifact refid="src"/>
<artifact file="file-src.jar"/>
</artifacts>
依赖项用于创建类路径或文件集。它们由<resolve> -task 使用,该任务以传递方式收集属于依赖项的工件。
<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.
-->
您需要设置一个引用文件的 POM,安装任务才能工作。
<install artifactsref="producedArtifacts"/>
您需要设置一个引用文件的 POM 以使部署任务工作,因为该 POM 文件将部署到存储库。
<deploy artifactsref="producedArtifacts">
<remoterepo refid="distrepo"/>
<snapshotrepo refid="snaprepo">
</deploy>
< resolve> -task 用于从远程服务器收集和解决依赖关系。如果没有为任务明确设置存储库,则使用“resolver.repositories”引用的存储库。默认情况下,它仅包含中央,但可以通过提供具有此 id 的另一个存储库定义来覆盖。
此任务能够以三种不同的方式组装收集到的依赖项:
对于同一个解析任务,这些目标也可能被多次提及,但只允许一个<dependencies>元素。
<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>
范围过滤器可以在每个目标上设置,枚举包含和/或排除的范围名称。排除通过在范围名称前加上-或! (例如提供,!系统)。
classpath属性是范围过滤器的快捷方式(例如classpath ="compile"等于scope="provided,system,compile")。有效值为“ compile ”、“ runtime ”、“ test ”。
<resolve>
<dependencies pomRef="pom"/>
<remoterepos refid="all"/>
<path refid="cp" classpath="compile"/>
<path refid="tp" classpath="test"/>
</resolve>
<files>元素的 layout 属性仅在同时给出dir属性并识别以下占位符以引用当前处理的工件的坐标时才被允许: