当前位置: 首页 > 面试题库 >

Maven是否有办法获取依赖版本的属性?

黎腾
2023-03-14
问题内容

我正在使用BOM表来从另一个项目导入依赖关系到我的项目,并且我需要一种方法来引用已在所述BOM表中声明的依赖项版本。到目前为止,我已经尝试将依赖项版本作为BOM中的属性列出,但是这种方法失败了,因为属性不会随BOM一起导入。

我已经看到了Dependency
Plugin的dependency:properties目标 几乎可以
完全满足我的需求,但是除了给我完整的工件路径之外,我还需要将版本作为属性。有没有什么可以让我将已解析工件的版本作为属性的呢?

更新-“为什么不使用父pom?”

我通常会发现自己在应用程序服务器环境中工作,在该环境中,提供的依赖项由BOM工件指定(因为看来这已成为分发相互关联的工件组(即widlfly)的某种通用/标准方式。因此,我想将BOM作为真实的唯一来源。
重新 执行已在BOM表中定义的依赖项版本属性之类的想法的想法似乎是错误的。

如果要在镜像应用程序服务器环境的父pom中定义属性,那么我现在就不得不担心使父pom属性和BOM属性保持同步-为什么此时甚至没有BOM?

该信息已经在依赖树上可用,仅需公开它即可。


问题答案:

为此,找不到任何现有的Maven或插件功能,因此我分叉了旧的dependencypath-maven-
plugin并将其更改为使用版本。现在,我可以插入这样的插件:

<build>
   .
   .
    <plugins>
        .
        .
        <plugin>
            <groupId>io.reformanda.semper</groupId>
            <artifactId>dependencyversion-maven-plugin</artifactId>
            <version>1.0.0</version>
            <executions>
                <execution>
                    <id>set-all</id>
                    <goals>
                        <goal>set-version</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

并访问如下属性:

groupId:artifactId:type [:classifier] .version

IE浏览器

io.undertow:undertow-core:jar.version = 1.3.15.Final

查看自述文件以获取有关如何使用该插件的更多信息。在Maven
Central可用:

<dependency>
    <groupId>io.reformanda.semper</groupId>
    <artifactId>dependencyversion-maven-plugin</artifactId>
    <version>1.0.0</version>
</dependency>

…插件一直到…



 类似资料:
  • 问题内容: 最近,我一直在研究前一段时间开发的项目中的一些改进,这就是我所发现的。pom文件中的许多依赖项都没有指定版本,但是已经解决了。该项目包含1个根模块和2个子模块。使用了Aggregator模式,这意味着根本没有dependencyManagement部分。上层项目仅聚合了2个模块,仅此而已。子项目并不将其称为父项。他们有不同的父母。我无法理解的是,子项目本身或它们的父项(事实上,它也没有

  • 当我对pom文件的属性部分中定义的键的依赖项使用version时,依赖项不会被下载,但是当我对依赖项的version进行硬编码时,依赖项会被下载。 repo.maven.apache.org/maven2/info/cukes/cucumber-java/{cucumber-version}/cucumber-java-{cucumber-version}.pom 为什么不是用在propertie

  • 例如:我们有一个health Utility jar,它作为maven依赖项添加到另一个项目a中。我们希望从health Utility jar中获得项目a的maven版本

  • 考虑到我有依赖项groupId和artifactId,我如何从pom中提取这个依赖项的版本。xml文件? 示例:如果我使用artifactId和groupId进行查询,我希望能够提取下面的依赖项版本。 我想将版本分配给一个全局环境变量,即DEP_version=1.6

  • 问题内容: 我使用Maven开发和构建了Java应用程序。我需要支持Java 1.6,因此我使用以下属性: 尽管如此,当我运行该应用程序时,仍然出现“不受支持的major.minor版本”错误,并且我怀疑我的一个依赖罐是使用比我需要支持的Java版本更新的Java版本进行编译的。 我的问题: 这有可能吗?我以为Maven会解决这种依赖版本问题。 有没有一种简单的方法来找出我所有依赖项的次要/主要版

  • 告诉Gradle以下内容的最简单方法是什么: 检索“junit”依赖项并获取其最新版本。 管理Maven和Ivy仓库对我来说有点新鲜。我尝试了以下步骤,它们导致错误: > 编写,并按以下方式设置存储库: 尝试使用Spring Source Ivy仓库: 也许我误解了什么。为什么获取最新版本的依赖项会如此困难?