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属性并识别以下占位符以引用当前处理的工件的坐标时才被允许: