首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有gcloud工件注册表的maven解析器-ant

带有gcloud工件注册表的maven解析器-ant
EN

Stack Overflow用户
提问于 2022-11-18 13:05:39
回答 1查看 21关注 0票数 0

我有个奇怪的问题

我希望使用maven解析器- ant来解决使用ant构建的旧项目中的依赖关系。因此,我创建了简单的pom,并且首先设置了单个jar依赖项--这个依赖项在我的私有gcloud工件注册中心中。为了与该gcloud服务集成,我将artifactregistry-maven-wagon扩展添加到pom中,mvn clean compile可以正常工作。

但是,当我在build.xml中引用pom时,没有从远程注册表下载任何内容。

build.xml

代码语言:javascript
复制
<?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中的定义。所以我想我只需要为解析器声明远程回购。

代码语言:javascript
复制
    <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中引用它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-22 10:51:24

我所做的第一个改变是设置resolver:remoterepo的id与pom中的id相同。

第二,向目标添加一个任务。

代码语言:javascript
复制
<exec executable="mvn">
    <arg value="-Drat.skip=true" />
    <arg value="dependency:resolve"/>
</exec>

因此,ant现在正在调用maven,因此它解决了所有依赖关系图,将这些工件安装在本地回购中,并且ant的解析器插件很乐意在不使用gcloud的远程回购的情况下从本地回购收集这些工件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74490133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档