我有个奇怪的问题
我希望使用maven解析器- ant来解决使用ant构建的旧项目中的依赖关系。因此,我创建了简单的pom,并且首先设置了单个jar依赖项--这个依赖项在我的私有gcloud工件注册中心中。为了与该gcloud服务集成,我将artifactregistry-maven-wagon扩展添加到pom中,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>resolver通过maven的中心远程回购,而不是使用pom中的定义。所以我想我只需要为解析器声明远程回购。
<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:未能收集com.google.cloud.artifactregistry上的依赖项引起的
无法访问构件注册中心://.
在我看来,解析器并没有真正使用maven定义,而且它无法在gcloud中进行身份验证。有什么暗示吗?或者我运气不好,我应该用其他的东西来登记
我希望解析器会查看maven的模型,并使用它的配置和插件来获取所有依赖项,然后在ant中引用它们。
发布于 2022-11-22 10:51:24
我所做的第一个改变是设置resolver:remoterepo的id与pom中的id相同。
第二,向目标添加一个任务。
<exec executable="mvn">
<arg value="-Drat.skip=true" />
<arg value="dependency:resolve"/>
</exec>因此,ant现在正在调用maven,因此它解决了所有依赖关系图,将这些工件安装在本地回购中,并且ant的解析器插件很乐意在不使用gcloud的远程回购的情况下从本地回购收集这些工件。
https://stackoverflow.com/questions/74490133
复制相似问题