maven-resolver-ant与gcloud工件注册表



我有一个奇怪的问题

我想使用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。

相关内容

  • 没有找到相关文章

最新更新