Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用属性maven插件?_Java_Maven - Fatal编程技术网

Java 如何使用属性maven插件?

Java 如何使用属性maven插件?,java,maven,Java,Maven,我想使用属性maven插件。我读过用法,但它对我不起作用 我创建了一个非常简单的项目来测试它。以下是我的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/xsd

我想使用属性maven插件。我读过用法,但它对我不起作用

我创建了一个非常简单的项目来测试它。以下是我的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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>MavenTest</artifactId>
  <version>1.0.0</version>
  <name>MavenTest</name>

  <properties>
    <prop1>2.2</prop1>
  </properties>

  <dependencies>
    <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j.version}</version>
        </dependency>
  </dependencies>

  <build>
    <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <version>1.0-alpha-2</version>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                            <files>
                                <file>${basedir}/my.properties</file>
                            </files>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    <pluginManagement>
        <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>
                                        org.codehaus.mojo
                                    </groupId>
                                    <artifactId>
                                        properties-maven-plugin
                                    </artifactId>
                                    <versionRange>
                                        [1.0-alpha-2,)
                                    </versionRange>
                                    <goals>
                                        <goal>
                                            read-project-properties
                                        </goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
  </build>
</project>
“my.properties”文件包含以下内容:

 log4j.version=2.2    
正如这里所描述的:

如果我使用pom.xml中定义的prop1属性,一切都正常


那我做错了什么

要使用版本属性,必须定义它们。插件只允许你这么做;但你必须为自己设定价值观。 像


1.2.17
编辑:

正如你所展示的,你已经做到了。现在看来,当您在执行中定义目标时,它只在该执行中有效。 尝试将其声明为全局:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <configuration>
        <files>
            <file>${basedir}/my.properties</file>
        </files>
    </configuration>
...

org.codehaus.mojo
属性maven插件
1.0-α-2
${basedir}/my.properties
...

确保${basedir}/my.properties文件与特定的属性值对一起存在: my.properties内容应为:
prop1=2.3

他们的官方答案是,不支持使用读取项目属性来设置依赖项的版本:

这不起作用,也不是properties maven插件的意图,而且从文件中读取属性来定义依赖项的版本有什么好处


关于这个问题,在这个答案上有一个非常透彻的解释:

maven的方法是在顶级POM中使用元素,该POM包括具有公共依赖关系的项目。这是最简单的方法

您还可以导入专门用于依赖项管理的POM。导入方法不需要父/子项目关系

请参阅Maven文档:


  • 我忘了显示我的属性文件,现在问题已被编辑。回答:如果我在pom.xml中定义属性,一切都正常。但是我想将属性存储在一个外部文件中;(您将该文件放在正确的目录中?意味着您在启动maven build时没有收到任何错误或警告?是的,我收到了。Eclipse的有效pom视图显示了正确的(绝对值)文件路径。我只得到了这个错误,它显示在问题中。这个问题没有解决方案?我有相同的问题。我在Github项目上打开了一个问题。我有相同的问题。我认为主要的优点是其他工具可以从相同的属性文件读取。
    <properties>
        <log4j.version>1.2.17</log4j.version>
    </properties>
    
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0-alpha-2</version>
        <configuration>
            <files>
                <file>${basedir}/my.properties</file>
            </files>
        </configuration>
    ...