当前位置: 首页 > 知识库问答 >
问题:

从Maven的父POM中的子级获取版本

淳于兴朝
2023-03-14

我有一个父级pom a和子级pom B、C和D。在B、C和D中,我有相同类型的依赖关系。

ie母Pom

<artifactID>blah</artifactID>
<packaging>pom</packaging>
    <modules>
        <module>B</module>
        <module>C</module>
        <module>D</module>
    </modules>
<artifactID>blah</artifactID>
<modules>
    <module>B</module>
    <module>C</module>
    <module>D</module>
</modules>
<build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <finalName>${project.artifactId}</finalName>
                  <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                      <manifestEntries>
                        <Child1Version>${project.version}</Child1Version> <!-- How to do this generic for any child pom ???? -->
                      </manifestEntries>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.handlers</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.schemas</resource>
                    </transformer>
                  </transformers>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
    </build>

共有1个答案

蒲昀
2023-03-14

父母POM需要有包装POM。不能使用打包jar的父POM。

 类似资料:
  • 当我使用mvn install构建工件时,我看到JAR在我的.m2文件夹中构建,但是Project.version没有替换为实际版本,即1.0-Snapshot。 > 每个工件的.m2存储库中的父pom和/或子pom是否具有指定的版本,或者是否为Project.version 我是否应该在父POM中指定Project.Version作为属性。maven文档说明Project.version可由De

  • 问题内容: 在处理POM之后,Jenkins构建有什么方法可以知道项目的Maven版本号吗? 我有一些项目由Maven控制版本控制,在构建后的工作中,我们想创建一个Debian软件包并调用一些shell脚本。我需要的是Maven以前可以用作Jenkins环境变量的版本号,因此我可以将其传递给构建后操作。 需要明确的是,我 没有 需要知道如何让詹金斯版本号传递到Maven的; 相反,我希望Maven

  • 我有一个带有子pom B、C和D的父pom A,在B、C和D中,我有相同类型的依赖项。 ie父Pom 儿童Pom 到目前为止,我已经尝试过编辑插件surefire,当试图排除子pom的测试范围时,它不起作用。 我的问题是,是否有一种方法可以将概要文件添加到父pom中,以排除所有子pom的类型测试jar的所有依赖项。谢谢

  • 问题内容: 我有很多类似的项目: 在jar中编译的每个项目:project-1.1.1.1.jar,....是否可以在父文件夹中添加pom.xml,以便为所有项目定义版本1时间? 问题答案: 如果省略,则从父级继承。但是,该元素必须包含一个用于父元素的元素,因此该版本必须出现在每个单个POM中,但只能出现一次。

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

  • 我在为父-子pom文件设置java编译器版本时遇到了问题。我在版本1.7的子pom中添加了maven-compiler-plugin,并注意到java版本的子模块从默认的1.5变成了1.7,而父项目仍然是1.5。然后,我将编译器插件从子pom移到父pom。预计对于父maven模块和子maven模块,编译器版本将更改为1.7。但奇怪的是,没有观察到任何变化,子模块仍然是1.7,父项目是1.5。我从e