gpt4 book ai didi

build - Ivy 和快照 (Nexus)

转载 作者:行者123 更新时间:2023-12-01 23:09:39 24 4
gpt4 key购买 nike

我正在使用 ant、ivy 和 Nexus 存储库管理器来构建和存储我的工件。我设法让一切正常工作:依赖关系解析和发布。直到我遇到问题......(当然!)。

我正在nexus中发布到“发布”存储库,该存储库被锁定为“禁用重新部署”(即使您将设置更改为“允许重新部署”(在我看来,那里的用户界面确实很蹩脚)。你可以想象我有多生气在我意识到这种情况发生之前,我的更改没有通过存储库更新时出现了这种情况。

无论如何,我现在必须切换所有内容以在 nexus 中使用“快照”存储库。问题是这搞乱了我的发布。我尝试了各种方法,包括广泛的谷歌搜索,但一无所获。我得到的错误是一个错误的 PUT 请求,错误代码 400。

谁能做到这一点,请给我指出我所缺少的内容。

非常感谢,

阿拉斯泰尔

仅供引用,这是我的配置:

请注意,我已经删除了任何让快照正常工作的尝试,因为我不知道什么实际上(可能)有用,什么完全是废话。因此,这是有效的仅发布设置。

另外,请注意,我添加了 XXX-API ivy.xml 仅供引用。我什至无法发布 xxx-common(而且甚至没有依赖项)。

Ant 任务:

<target name="publish" depends="init-publish">

<property name="project.generated.ivy.file" value="${project.artifact.dir}/ivy.xml"/>
<property name="project.pom.file" value="${project.artifact.dir}/${project.handle}.pom"/>

<echo message="Artifact dir: ${project.artifact.dir}"/>
<ivy:deliver
deliverpattern="${project.generated.ivy.file}"
organisation="${project.organisation}"
module="${project.artifact}"
status="integration"
revision="${project.revision}"
pubrevision="${project.revision}" />

<ivy:resolve />

<ivy:makepom
ivyfile="${project.generated.ivy.file}"
pomfile="${project.pom.file}"/>

<ivy:publish
resolver="${ivy.omnicache.publisher}"
module="${project.artifact}"
organisation="${project.organisation}"
revision="${project.revision}"
pubrevision="${project.revision}"
pubdate="now"
overwrite="true"
publishivy="true"
status="integration"
artifactspattern="${project.artifact.dir}/[artifact]-[revision](-[classifier]).[ext]"
/>


</target>

几个 ivy 文件来了解内部依赖关系:

XXX-常用项目:

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info
organisation="com.myorg.xxx"
module="xxx_common"
status="integration"
revision="1.0">
</info>
<publications>
<artifact name="xxx_common" type="jar" ext="jar"/>
<artifact name="xxx_common" type="pom" ext="pom"/>
</publications>
<dependencies>
</dependencies>
</ivy-module>

XXX-API项目:

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info
organisation="com.myorg.xxx"
module="xxx_api"
status="integration"
revision="1.0">
</info>
<publications>
<artifact name="xxx_api" type="jar" ext="jar"/>
<artifact name="xxx_api" type="pom" ext="pom"/>
</publications>
<dependencies>
<dependency org="com.myorg.xxx" name="xxx_common" rev="1.0" transitive="true" />
</dependencies>
</ivy-module>

IVY 设置.xml:

<ivysettings>

<properties file="${ivy.project.dir}/project.properties" />


<settings
defaultResolver="chain"
defaultConflictManager="all" />

<credentials host="${ivy.credentials.host}" realm="Sonatype Nexus Repository Manager" username="${ivy.credentials.username}" passwd="${ivy.credentials.passwd}" />

<caches>
<cache name="ivy.cache" basedir="${ivy.cache.dir}" />
</caches>

<resolvers>
<ibiblio name="xxx_publisher" m2compatible="true" root="${ivy.xxx.publish.url}" />
<chain name="chain">
<url name="xxx">
<ivy pattern="${ivy.xxx.repo.url}/com/myorg/xxx/[module]/[revision]/ivy-[revision].xml" />
<artifact pattern="${ivy.xxx.repo.url}/com/myorg/xxx/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<ibiblio name="xxx" m2compatible="true" root="${ivy.xxx.repo.url}"/>
<ibiblio name="public" m2compatible="true" root="${ivy.master.repo.url}" />
<url name="com.springsource.repository.bundles.release">
<ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<url name="com.springsource.repository.bundles.external">
<ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
</chain>
</resolvers>



</ivysettings>

最佳答案

w00h00t。

(向全世界寻求帮助有一种宣泄作用。通常,即使没有回应,你也能更快地解决问题)。

无论如何,对于感兴趣的人来说,可以归结为以下几点:

a) 在所有修订中添加 -SNAPSHOT。这涉及到 fork 第二个 ivy.xml -> ivy.SNAPSHOT.xml 并在 ivy ant 任务中显式引用它。b) 鉴于这是手动添加,我必须遍历整个构建文件树并为发布和快照流程提供并行路径。在我看来,这是蹩脚的。但是,正如我猜想我们极不可能发明任何其他类型的流,这可能不会膨胀,并且 2 个并行流将保留。c) 我向 ivy 指定了各种提示来检查快照的更新。例如解析器上的 checkUpdated="true"changePattern=".*-SNAPSHOT"。并添加

<modules org="myorg" name=*" resolveMode="dynamic" />

不过,如果能够与快照内容自动集成,那就太好了。 ivy 的一点点(可选的)聪明才智。让我们面对现实吧,像 nexus 这样的 Maven 存储库确实很有用,而且我当然使用 ivy 只是为了绕过 Maven 蹩脚的构建过程。我喜欢使用 nexus。

无论如何。如果有人想对此进一步提问,请随意。

关于build - Ivy 和快照 (Nexus),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2989190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com