0

Ammonite 可以从 Maven 存储库下载依赖项。

我正在使用 SNAPSHOT 依赖项,并且我想始终使用缓存版本,以避免使用可能未经测试的较新版本。这可能吗?

我知道 Ammonite 最近使用 Coursier 和 Ivy,所以我发现的一些信息可能已经过时了。

我的一些想法是将当前的 SNAPSHOT 版本安装在另一个名称的本地存储库中。

4

3 回答 3

2

这样做与依赖管理系统的设计相冲突,可能是个坏主意,但可以做到。有几种方法,具体取决于您的情况。

如果您可以控制存储库,或者是部署工件的人,则可以打开“唯一快照版本”功能,这将为您提供所需的内容。(看看http://maven.apache.org/pom.html#Repository

如果您不是部署的人,并且无法控制 repo,那么是的,我怀疑复制工件的特定版本,可能具有唯一的名称、版本或分类器,可能是您的最佳选择。

警告:话虽如此,这似乎是个坏主意——SNAPSHOT 版本应该是通过了所有测试的最新最好的版本,不应被视为永远不会更改的已发布版本。似乎如果你想要一个不会改变的版本,你不应该使用 SNAPSHOT。但只有你知道你的用例。

于 2019-03-20T12:39:54.680 回答
0

@jwismar,我同意应该避免使用快照版本。

但如果你必须使用它,我是这样做的:

export COURSIER_TTL=inf
myscript.sc

COURSIER_TTL 环境变量控制快照的保存时间。默认情况下,24 小时。

这样,将始终使用缓存的版本。

更新:但是有一个错误,阻止它工作。

于 2019-03-21T14:52:45.217 回答
0

创建.ivy2/local具有以下目录结构的本地存储库:

organization/moduleId/version/ivys
                              jars
                              poms

像这样创建一个新的ivy.xml内部ivys目录:

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
    <info organisation="myorg" module="mymod" revision="someVersion" status="integration" e:scalaVersion="2.12" e:sbtVersion="0.13">
        <description>
        my module
        </description>
    </info>
    <configurations>
        <conf name="compile" visibility="public" description=""/>
        <conf name="runtime" visibility="public" description="" extends="compile"/>
        <conf name="test" visibility="public" description="" extends="runtime"/>
        <conf name="provided" visibility="public" description=""/>
        <conf name="optional" visibility="public" description=""/>
        <conf name="sources" visibility="public" description=""/>
        <conf name="docs" visibility="public" description=""/>
        <conf name="pom" visibility="public" description=""/>
    </configurations>
    <publications>
        <artifact name="sikulix2tigervnc" type="pom" ext="pom" conf="pom"/>
        <artifact name="sikulix2tigervnc" type="jar" ext="jar" conf="compile"/>
    </publications>
    <dependencies>
    </dependencies>
</ivy-module>

将具有正确名称的jars目录和.*.jarpoms*.pom

问题是 Coursier 不会下载传递依赖,所以添加额外的import $ivy.....

于 2019-03-28T14:55:56.700 回答