Woj*_*tek 6 java maven maven-surefire-plugin
背景:我们将当前项目版本设置为系统环境:
\n\n<plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-surefire-plugin</artifactId>\n <version>2.19.1</version>\n <configuration>\n <forkMode>always</forkMode>\n <environmentVariables>\n <project.target>${project.build.outputDirectory}</project.target>\n <project.version>${project.version}</project.version>\n </environmentVariables>\n </configuration>\n</plugin>\nRun Code Online (Sandbox Code Playgroud)\n\n然后我们在测试中使用该值System.getenv("project.version");,这在除一台机器之外的所有机器\xe2\x80\xa6 上都运行良好。
有问题的机器是带有 Ubuntu 16.04 LTS 的新 AWS EC2 实例。设置和配置看起来没问题。我检查了 OpenJDK 和 OracleJDK 的最新版本,我还检查了包含的 java 和 maven 版本:
\n\n$ java -version\nopenjdk version "1.8.0_151"\nOpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)\nOpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)\nRun Code Online (Sandbox Code Playgroud)\n\n行家
\n\n$ mvn -version\nApache Maven 3.3.9\nMaven home: /usr/share/maven\nJava version: 1.8.0_151, vendor: Oracle Corporation\nJava home: /usr/lib/jvm/java-8-openjdk-amd64/jre\nDefault locale: en_US, platform encoding: UTF-8\nOS name: "linux", version: "4.4.0-1049-aws", arch: "amd64", family: "unix"\nRun Code Online (Sandbox Code Playgroud)\n\n以及可供下载的最新版本:
\n\n$ mvn --version\nApache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T07:58:13Z)\nMaven home: /usr/share/maven\nJava version: 1.8.0_161, vendor: Oracle Corporation\nJava home: /usr/lib/jvm/jdk1.8.0_161/jre\nDefault locale: en_US, platform encoding: UTF-8\nOS name: "linux", version: "4.4.0-1049-aws", arch: "amd64", family: "unix"\nRun Code Online (Sandbox Code Playgroud)\n\n而且这个问题仍然存在。奇怪的是,分叉已启用(必需)并且日志条目显示正在设置变量:
\n\n[DEBUG] Setting environment variable [project.version]=[4.0.0-SNAPSHOT]\nRun Code Online (Sandbox Code Playgroud)\n\n然后我们通过分叉进行测试执行:
\n\n[DEBUG] boot(compact) classpath: surefire-booter-2.19.1.jar surefire-api-2.19.1.jar test-classes classes junit-4.10.jar hamcrest-core-1.1.jar \xe2\x80\xa6-4.0.0-SNAPSHOT.jar surefire-junit4-2.19.1.jar\nRun Code Online (Sandbox Code Playgroud)\n\n分叉命令行:/bin/sh -c cd /mnt/ebsVolume/
\n\n但仍System.getenv("project.version");返回 null
我认为您需要改用systemPropertyVariables。请参阅此处的文档。
<systemPropertyVariables>
<project.target>${project.build.outputDirectory}</project.target>
<project.version>${project.version}</project.version>
</systemPropertyVariables>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5252 次 |
| 最近记录: |