【问题标题】:Different groupId (and version) for a same Maven project同一个 Maven 项目的不同 groupId(和版本)
【发布时间】:2017-07-13 19:15:15
【问题描述】:

我有一个项目,其中使用两个 groupIds 和不同的 versions 以两种不同的方式部署 Maven 项目。例如:

a) 取决于分支(使用jitpack):

    <dependency>
        <groupId>com.github.user</groupId>
        <artifactId>myProj</artifactId>
        <version>aaaaaa-SNAPSHOT</version>
    </dependency>

b) 取决于 ... 版本(其他来源):

    <dependency>
        <groupId>org.user</groupId>
        <artifactId>myProj</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </dependency>

我正在使用方法 a)。我的项目还依赖于其他一些部署方法 b) 的项目。我不知道,我怎样才能覆盖 b) 或者我怎样才能告诉 Maven 这些是同一个项目并要求他们使用 a)。

This 提供了一种使用 classifier 来使用具有不同工件名称的同一项目的方法。我也看过Dependency Management,但不能真正理解。我不是这方面的专家。

【问题讨论】:

  • 只是提示 -SNAPSHOT 不是发布...
  • 仅供参考:"a) 取决于分支" – Maven 项目取决于人工制品(jarwar 等),而不是(SCM)分支. aaaaaa-SNAPSHOT 是一个不寻常的版本,请参阅 Understanding Maven Version Numbers。 “b) ... &lt;version&gt;1.0.0-SNAPSHOT不是发布,而是快照(即开发)版本。 &lt;type&gt;jar&lt;scope&gt;compile 不需要显式声明,因为它们是默认值。

标签: java maven jitpack


【解决方案1】:

对于 Maven,这两个依赖项是不同的,因此不能被覆盖。

但您可以使用exclusionsOptional Dependencies and Dependency Exclusions 中的详细描述)来移除任何传递依赖。

【讨论】:

  • 嗯.. 可能是对的。对于方法 b),我可以使用 exclusion。如果,我没有错,如果我使用 1.1.0 版本并排除 1.0.0,它会起作用。正确的?但是,我想完全忽略 1.0.0-SNAPSHOT。可能,这并不容易(或根本不可能)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 2023-03-31
  • 2012-05-13
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多