Java 在pom.xml中外部化属性的最佳方法是什么

Java 在pom.xml中外部化属性的最佳方法是什么,java,maven,maven-3,Java,Maven,Maven 3,我有几个mvn项目的属性几乎相同。什么是将这些属性外部化的最好方法,这样我就不会复制它们了 首先是财产: <properties> <!-- LOMBOK version --> <lombok.version>1.16.4</lombok.version> <!-- LOGGING versions --> <slf4j.version>1.6.4</slf4j.version>

我有几个mvn项目的属性几乎相同。什么是将这些属性外部化的最好方法,这样我就不会复制它们了

首先是财产:

<properties>
    <!-- LOMBOK version -->
    <lombok.version>1.16.4</lombok.version>
    <!-- LOGGING versions -->
    <slf4j.version>1.6.4</slf4j.version>
    <log4j.version>1.2.16</log4j.version>
    <!-- MAVEN COMPILER PLUGIN version -->
    <maven-compiler-plugin.version>3.3</maven-compiler-plugin.version>
    <maven-compiler-plugin.source.version>1.7</maven-compiler-plugin.source.version>
    <maven-compiler-plugin.target.version>1.7</maven-compiler-plugin.target.version>
    <maven-compiler-plugin.compilerVersion>1.7</maven-compiler-plugin.compilerVersion>
</properties>

1.16.4
1.6.4
1.2.16
3.3
1.7
1.7
1.7
然后,从属关系管理:

<dependencyManagement>

    <dependencies>
        <!-- LOMBOK DEPENDENCIES -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
        <!-- LOGGING DEPENDENCIES -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- LOGGING DEPENDENCIES - LOG4J -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>           

</dependencyManagement>

org.projectlombok
龙目
${lombok.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
org.slf4j
slf4j api
${slf4j.version}
log4j
log4j
${log4j.version}

您可以使用所有子项目都使用的父项目。将公共属性移动到父maven项目中,然后将类似的内容添加到子项目中:


com.parent
父项目
1.

什么类型的属性?你能举一些例子吗?我打赌像${org.springframework.version}这样的东西对我来说也是,但这样做是错误的。出于这样的目的,存在dependencyManagement…而属性是错误的方式。@khmarbaise是的,我知道,但我不希望每个项目都定义DependencyManager或pluginManagement部分。为什么每个项目都定义DependencyManager或pluginManagement部分?插件管理部门在公司pom中只应被罚款一次。dependencyManagement部分可以在BOM中定义(并通过导入范围使用)…顺便说一句:您应该使用
maven.compiler.target
maven.compiler.source
而不是给定的值,因为这些是默认属性。见