【发布时间】:2016-04-07 10:29:34
【问题描述】:
更新(阅读Passing extra properties to maven archetype:generate后):
我创建了自己的原型。 src/main/resources/archetype-resources/pom.xml:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>$groupId</groupId>
<artifactId>$artifactId</artifactId>
<version>$version</version>
<packaging>jar</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>$groupId</groupId>
<artifactId>${3rdPartyDepsArtifactId}</artifactId>
<version>${3rdPartyDepsVersion}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
</project>
想使用我自己的 3rd-party-deps-artifact 和 3rd-party-deps-version 参数。所以我添加了 src/main/resources/META-INF/maven/archetype-metadata.xml 文件:
<archetype-descriptor name="basic">
<requiredProperties>
<requiredProperty key="3rdPartyDepsArtifactId"/>
<requiredProperty key="3rdPartyDepsVersion"/>
</requiredProperties>
</archetype-descriptor>
将原型安装到我的本地存储库中。然后根据我的自定义原型创建工件:
mvn 原型:生成 -DarchetypeGroupId=test -DarchetypeArtifactId=test2 -DarchetypeVersion=1.0.0-SNAPSHOT -D3rdPartyDepsArtifactId=3rd-party-deps -D3rdPartyDepsVersion=1.0.0-SNAPSHOT -DgroupId=test3 -DartifactId=my_test -Dversion=1.0.0-SNAPSHOT
在输出中,我可以看到 3rdPartyDepsVersion 和 3rdPartyDepsArtifactId 现在都应用了: 确认属性配置:
groupId: ...
artifactId: ...
version: 1.0.0-SNAPSHOT
package: ...
3rdPartyDepsArtifactId: 3rd-party-deps
3rdPartyDepsVersion: 1.0.0-SNAPSHOT
但是在生成的项目中,dependencyManagement 内部的这些属性仍然被忽略:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>test3</groupId>
<artifactId>${3rdPartyDepsArtifactId}</artifactId>
<version>${3rdPartyDepsVersion}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
如何强制 maven 使用 3rdPartyDepsArtifactId 和 3rdPartyDepsVersion 属性?
【问题讨论】:
-
@AleksandrM,我尝试使用该解决方案,但没有成功
-
尝试用一些简单的名字代替
3rdPartyDepsArtifactId。