在maven和maven插件中选择依赖版本

发布于 2024-11-07 13:48:00 字数 494 浏览 4 评论 0原文

我有一个使用 hsqldb 1.8.0.10 的 Maven 插件。在插件的 pom.xml 中,它是这样声明的:

<dependency>
    <groupId>hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>1.8.0.10</version>
</dependency>

但是如果我从另一个 Maven 项目运行该插件,并且该项目有较新版本的 hsqldb(例如 1.9.0),我如何配置我的插件他会使用最新版本的hsqldb,而不改变它的pom.xml?

反过来也可以做到这一点吗?如果我的另一个maven项目使用hsqldb 1.7.0(例如),他将使用maven插件本身指定的1.8.0.10版本?

我希望有人能回答我的问题。

亲切的问候,

瓦勒

I have a maven plugin which is using hsqldb 1.8.0.10. In my pom.xml from the plugin, it is declared like this:

<dependency>
    <groupId>hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>1.8.0.10</version>
</dependency>

But if I run that plugin from another maven project, and that project has a newer version of hsqldb (for instance 1.9.0), how can I configure my plugin that he will use the newest version of hsqldb, without changing it's pom.xml?

And is it possible to do this the other way around as well? If my other maven project uses hsqldb 1.7.0 (for instance), that he will use the 1.8.0.10 version which is specified in the maven plugin itself?

I hope someone can answer my question.

Kind regards,

Walle

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-11-14 13:48:00

您的主要问题是可能的,但如果插件因任何原因无法与较新的代码一起使用,它可能无法正常工作。

插件可以拥有自己的个人依赖项部分,并将使用标准 Maven 依赖项解析,选择请求的最高版本。所以,你可以这样做,

<plugin>
    <groupId>some.group.id</groupId>
    <artifactId>some.artifact.id</artifactId>
    <version>someversion</version>
    <dependencies>
        <dependency>
            <groupId>hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>1.9.0</version>
        </dependency>
    </dependencies>
</plugin>

但我认为反过来是不可能的。

Your main question is possible, but it might not work properly if the plugin doesn't work with the newer code for any reason.

A plugin can have it's own personal dependencies section, and will use standard Maven dependency resolution, choosing the highest version requested. So, you can do

<plugin>
    <groupId>some.group.id</groupId>
    <artifactId>some.artifact.id</artifactId>
    <version>someversion</version>
    <dependencies>
        <dependency>
            <groupId>hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>1.9.0</version>
        </dependency>
    </dependencies>
</plugin>

I don't think going the other way around is possible, though.

ゝ杯具 2024-11-14 13:48:00

使用版本的属性占位符,例如 ${hsqldb.version} 然后在不同的项目 pom 中声明要放入其中的版本

use properties place holder for the version, say ${hsqldb.version} then declare in different project pom the version you want to put in it

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文