Maven问题使用修订属性构建一个模块



最近我们尝试使用jenkins提供 $ {restision} 属性的jenkins(maven 3.3.9)。它可以在JSON创建用于Dev Builds的0.0.1-SNAPSHOT和用于发行版的0.0.1-RC上工作,但是我们在开发人员机器上使用Maven遇到了问题。我们有多模块的Maven项目,其中包含父母定义的版本,一些模块将其他模块用作依赖项。两者都将其从Jenkins构建,并在本地使用Maven,与IDE集成并运行测试,然后将其推入存储库。当我们尝试构建一个模块时,Maven无法识别${revision},尽管当我们提到所有模块时,它可以正常工作,例如mvn clean install -pl appserver,我们看到

未能在项目应用程序上执行目标:无法解决project com.org:appserver:war:0.0.1-local:无法在com.org:my-kinesis-events:jar:0.0收集依赖项。1-local:未能读取com.org的伪影描述符:我的kinesis-events:jar:0.0.1-local:无法将artifact com.org:my-parent:pom:qum:qum:qum:grevision}从中央:无法转移.../repository/maven-central/com/org/my-parent/$ {revision}/my-parent-$ {revision} .pom。错误代码500,服务器错误 - >[帮助1]

我们尝试使用:

  • -Drevision=0.0.1-local

  • <profile> <id>default-version</id> <activation> <property> <name>!revision</name> </property> <activeByDefault>true</activeByDefault> </activation> <properties> <revision>0.0.1-local</revision> <project.version>0.0.1-local</project.version> </properties> </profile>

,但唯一有效的是为父母的构建,该构建构建模块及其所有模块取决于:

mvn clean install -pl appserver,my-kinesis-events,module1,module2,...

尽管以上工作需要从团队中定义IDE的自定义运行配置,但每次需要一些东西。

有人还经历了这个问题并找到了解决方案吗?

父pom片段: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.org</groupId> <artifactId>my-parent</artifactId> <version>${revision}</version> <packaging>pom</packaging> <name>My Parent module</name>
<modules> <module>../my-tools</module> <module>my-kinesis-events</module> .... </modules> ..... </project> <dependencyManagement> <dependencies> <dependency> <groupId>my.org</groupId> <artifactId>my-kinesis-events<</artifactId> <version>${project.version}</version> <dependency> <dependencies> </dependencyManagement>

模块POM片段: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>appServer</artifactId> <parent> <groupId>com.org</groupId> <artifactId>my-dsp</artifactId> <version>${revision}</version> <relativePath>..</relativePath> </parent> <packaging>war</packaging> <name>AppServerAPI</name> <description>Application Server</description> <dependencies> <dependency> <groupId>com.org</groupId> <artifactId>my-openrtb</artifactId> </dependency> ..... </dependencies> .... </project>

这些问题已解决以来,自Maven 3.5以来,您需要使用Maven Flatten插件来确保在发布前从POM中删除所有变量。否则,您最终将pom包含$ {修订}具有版本。

这在官方Maven文档中很好地解释了:

https://maven.apache.org/maven-ci-frynedly.html#install-deploy

相关内容

最新更新