我已经建立了一个 AWS CodeArtifact 存储库,并使用 Maven 向它发布了一个 jar。
我想在 Ant 任务中使用该 jar,并且我正在尝试使用 Apache Ivy 下载依赖项。
我已成功使用 Ivy 从 Maven 中央存储库下载公共库,但我不知道如何将我的 AWS CodeArtifact 存储库添加到 Ivy。官方的常春藤教程对我来说很难理解。
我已经建立了一个 AWS CodeArtifact 存储库,并使用 Maven 向它发布了一个 jar。
我想在 Ant 任务中使用该 jar,并且我正在尝试使用 Apache Ivy 下载依赖项。
我已成功使用 Ivy 从 Maven 中央存储库下载公共库,但我不知道如何将我的 AWS CodeArtifact 存储库添加到 Ivy。官方的常春藤教程对我来说很难理解。
解决方案是从 Ivy 切换到 Maven Resolver Ant Tasks - 更好地记录和更容易理解。
我现在可以使用类似这样的方式从我的 ant 任务中加载 AWS CodeArtifact 依赖项(在从 AWS CodeArtifact 执行 Maven 设置说明之后)。这将下载 Maven 解析器 jar 作为该过程的一部分:
<property name="maven.install.version" value="1.3.0"/>
<property name="ant.jar.dir" value="${user.home}/.ant/lib"/>
<property name="maven.jar.file" value="${ant.jar.dir}/maven-resolver-ant-tasks.jar"/>
<target name="load-maven-dependencies" depends="init-maven">
<resolver:resolve>
<dependencies>
<dependency coords="group:artifact:version"/>
</dependencies>
<path refid="main.classpath" classpath="compile"/>
</resolver:resolve>
</target>
<target name="init-maven" depends="download-maven">
<path id="maven.lib.path">
<fileset dir="${ant.jar.dir}" includes="${maven.jar.file}"/>
</path>
<taskdef resource="org/apache/maven/resolver/ant/antlib.xml" uri="antlib:org.apache.maven.resolver.ant" classpathref="maven.lib.path"/>
</target>
<target name="download-maven" unless="offline">
<mkdir dir="${ant.jar.dir}" />
<get src="https://search.maven.org/remotecontent?filepath=org/apache/maven/resolver/maven-resolver-ant-tasks/${maven.install.version}/maven-resolver-ant-tasks-${maven.install.version}-uber.jar" dest="${maven.jar.file}" usetimestamp="true"/>
</target>
然后,您可以在 taskdef 中使用 main.claspath,如下所示:
<taskdef name="customTask" classname="com.prosc.CustomAntTask" classpathref="main.classpath" />