【问题标题】:Using custom properties in your own maven archetype在您自己的 Maven 原型中使用自定义属性
【发布时间】: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 属性?

【问题讨论】:

标签: java maven


【解决方案1】:

不确定这是否可能如您所愿,但另一种方法可能是将属性包含在您的settings.xml(在配置文件中)或在 maven 命令-D 中传递它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多