Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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 pom文件中使用外部文件设置系统属性_Java_Maven_System Properties - Fatal编程技术网

Java 在maven pom文件中使用外部文件设置系统属性

Java 在maven pom文件中使用外部文件设置系统属性,java,maven,system-properties,Java,Maven,System Properties,我正在寻找最好的方法,以便在maven pom文件中导入.properties文件,该文件将在属性文件中找到的属性设置为系统属性 例如,我有一个dev.properties文件,其中包含特定于开发人员的系统属性,这意味着dev.properties文件不会持久保存在源代码存储库中 我遇到了maven properties插件,但这并没有将文件中的属性设置为系统属性,以下是该插件在我的pom文件中的声明: <plugin> <groupId>org.codehaus

我正在寻找最好的方法,以便在maven pom文件中导入.properties文件,该文件将在属性文件中找到的属性设置为系统属性

例如,我有一个dev.properties文件,其中包含特定于开发人员的系统属性,这意味着dev.properties文件不会持久保存在源代码存储库中

我遇到了maven properties插件,但这并没有将文件中的属性设置为系统属性,以下是该插件在我的pom文件中的声明:

<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>
        </execution>
    </executions>
    <configuration>
       <files>
           <file>${basedir}/dev.properties</file>
       </files>
    </configuration>
</plugin>

org.codehaus.mojo
属性maven插件
1.0-α-2
初始化
读取项目属性
${basedir}/dev.properties

但在java代码中,当我运行测试目标或jacoco报告目标时,我使用System.getProperties(“prop1”);,例如,我总是被返回null,这导致我的测试失败。这在maven中可能吗?我走对了吗?

我建议使用同一个插件的目标,或者您也可以使用通常的方法设置系统属性,在通过您的配置读取属性后,使用这些属性,如下面的单元测试:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.0</version>
        <configuration>
          <systemPropertyVariables>
            <propertyName>propertyValue</propertyName>
            <buildDirectory>${project.build.directory}</buildDirectory>
            [...]
          </systemPropertyVariables>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

[...]
org.apache.maven.plugins
maven surefire插件
2.22.0
财产价值
${project.build.directory}
[...]
[...]

该插件的设置系统属性目标不允许使用外部文件。它要求在外部文件中声明我的属性,或者至少声明它们的值。我不能在pom文件中乱扔这些属性的值,因为它们是特定于开发人员的。想想密码等等。实际上,我可以结合使用这两种方法,使用前面提到的插件的“读取项目属性”目标,然后从代码块中将属性添加到systemProperttVariables元素中。@JohnMcDonnell您结合了它们吗?你能发布一个有效的组合示例吗。我希望在初始化阶段阅读并设置它们,就像在任何阶段之前一样。