Osc*_*Ryz 63 maven-2 system-properties
有没有办法(我的意思是如何)在maven项目中设置系统属性?
我想从我的测试和我的webapp(本地运行)访问一个属性,我知道我可以使用java系统属性.
我应该把它放在./settings.xml或类似的东西?
上下文
我参加了一个开源项目并设法更改数据库配置以使用JavaDB
现在,在JavaDB的jdbc url中,可以将数据库的位置指定为完整路径(请参阅:此其他问题)
或系统属性: derby.system.home
我已经有了代码工作,但目前所有硬编码都是:
jdbc:derby:/Users/oscarreyes/javadbs/mydb
Run Code Online (Sandbox Code Playgroud)
我想删除完整的路径,让它像:
jdbc:derby:mydb
Run Code Online (Sandbox Code Playgroud)
要做到这一点,我需要将系统属性(derby.system.home)指定为maven,但我不知道如何.
测试是使用junit执行的(我在pom.xml中看不到任何插件),web应用程序使用jetty插件运行.
在命令行中指定系统属性似乎适用于jetty,但我不确定这是否实用(授予其他一些用户可以从eclipse/idea /中运行它)
Pas*_*ent 70
有没有办法(我的意思是如何)在maven项目中设置系统属性?我想从我的测试中访问一个属性[...]
您可以在Maven Surefire插件配置中设置系统属性(这是有道理的,因为默认情况下测试是分叉的).从使用系统属性:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<systemPropertyVariables>
<propertyName>propertyValue</propertyName>
<buildDirectory>${project.build.directory}</buildDirectory>
[...]
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>
Run Code Online (Sandbox Code Playgroud)
和我的webapp(在本地运行)
不确定你的意思,但我认为webapp容器是由Maven启动的.您可以使用以下命令在命令行上传递系统属性:
mvn -DargLine="-DpropertyName=propertyValue"
Run Code Online (Sandbox Code Playgroud)
更新:好的,现在就搞定了.对于Jetty,您还应该能够在Maven Jetty Plugin配置中设置系统属性.从设置系统属性:
<project>
...
<plugins>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
...
<systemProperties>
<systemProperty>
<name>propertyName</name>
<value>propertyValue</value>
</systemProperty>
...
</systemProperties>
</configuration>
</plugin>
</plugins>
</project>
Run Code Online (Sandbox Code Playgroud)
yeg*_*256 65
properties-maven-plugin插件可能会有所帮助:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<goals>
<goal>set-system-properties</goal>
</goals>
<configuration>
<properties>
<property>
<name>my.property.name</name>
<value>my.property.value</value>
</property>
</properties>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
小智 9
我已经了解到,如果你正在做一个"独立的"java应用程序,也可以使用exec-maven-plugin执行此操作.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${maven.exec.plugin.version}</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${exec.main-class}</mainClass>
<systemProperties>
<systemProperty>
<key>myproperty</key>
<value>myvalue</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)