我有一个奇怪的问题
我想使用maven-resolver-ant来解析使用ant构建的旧项目中的依赖项。因此,我已经创建了简单的pom,并在开始时设置了单个jar依赖项-该依赖项位于我的私有gcloud工件注册表中。为了与gcloud服务集成,我在pom中添加了artifactregistry-maven-wagon
扩展,mvn clean compile
可以正常工作。
但是当我在build.xml中引用pom时,没有从远程注册表下载
build . xml
<?xml version="1.0" encoding="UTF-8"?>
<project
default="run"
name="old 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="./jars" includes="maven-resolver-ant-tasks-1.4.*uber.jar"/>
</classpath>
</taskdef>
<property name="target.lib" location="dist/lib" />
<resolver:pom id="pom"
file="./pom.xml" />
<target name="process-resources">
<mkdir dir="${target.lib}"/>
<resolver:resolve failOnMissingAttachments="true">
<resolver:dependencies id="deps" >
<pom refid="pom"/>
</resolver:dependencies>
<resolver:files dir="${target.lib}"
layout="{artifactId}-{classifier}.{extension}" />
</resolver:resolve>
</target>
</project>
解析器通过maven的中央远程仓库,而不是使用来自maven的定义。所以我认为我只需要为resolver
声明remote repo<resolver:remoterepo id="remote-registry" url="${pom.properties.my-registry-url}"
type="default" releases="true" snapshots="true"
updates="always" checksums="fail"/>
<target name="process-resources">
<mkdir dir="${target.lib}"/>
<resolver:resolve failOnMissingAttachments="true">
<resolver:dependencies id="deps" >
<pom refid="pom"/>
</resolver:dependencies>
<resolver:remoterepos refid="remote-registry"/>
<resolver:files dir="${target.lib}"
layout="{artifactId}-{classifier}.{extension}" />
</resolver:resolve>
</target>
,但是对于
就失败了肇因:org.apache.maven.resolver.internal.ant.org.eclipse.aether.collection.DependencyCollectionException: Failed to collect dependencies at com.google.cloud。
无法访问artifacregistry://…
在我看来,解析器并没有真正使用maven定义,它不能验证到gcloud。有提示吗?或者我运气不好,我应该用别的东西作为注册表
我希望解析器会查看maven的模型,并使用它的配置和插件来获取所有依赖项,并在ant中引用它们。
我做的第一个改变是设置resolver:remoterepo
的相同id,因为我在我的pom xml。
<exec executable="mvn">
<arg value="-Drat.skip=true" />
<arg value="dependency:resolve"/>
</exec>
所以现在ant调用maven,所以它解析所有的依赖关系图,安装这些工件在本地repo和ant的解析器插件很高兴从本地repo收集这些工件,而不使用gcloud的远程repo。