gpt4 book ai didi

maven-2 - 为 Maven 项目指定系统属性

转载 作者:行者123 更新时间:2023-12-02 04:20:19 25 4
gpt4 key购买 nike

有没有办法(我的意思是如何)在 Maven 项目中设置系统属性?

我想从我的测试和我的 web 应用程序(本地运行)访问属性,并且我知道我可以使用 java 系统属性。

我应该将其放入 ./settings.xml 或类似的内容中吗?

上下文

我采用了一个开源项目并设法更改数据库配置以使用 JavaDB

现在,在 JavaDB 的 jdbc url 中,可以将数据库的位置指定为完整路径(请参阅:this other question)

或者系统属性:derby.system.home

我的代码已经可以运行,但目前它全部被硬编码为:

 jdbc:derby:/Users/oscarreyes/javadbs/mydb

我想删除完整路径,将其保留为:

 jdbc:derby:mydb

为此,我需要为 Maven 指定系统属性 (derby.system.home),但我不知道如何操作。

测试是使用 junit 执行的(我在 pom.xml 中没有看到任何插件),并且 Web 应用程序使用 jetty 插件运行。

在命令行中指定系统属性似乎适用于 jetty,但我不确定这是否实用(授予其他一些用户可以从 eclipse/idea/运行它)

最佳答案

Is there a way ( I mean how do I ) set a system property in a maven project? I want to access a property from my test [...]

您可以在 Maven Surefire Plugin 中设置系统属性配置(这是有道理的,因为测试默认是 fork 的)。来自 Using System Properties :

<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>

and my webapp ( running locally )

不确定你的意思,但我假设 webapp 容器是由 Maven 启动的。您可以使用以下命令在命令行上传递系统属性:

mvn -DargLine="-DpropertyName=propertyValue"

更新: 好的,现在明白了。对于 Jetty,您还应该能够在 Maven Jetty 插件配置中设置系统属性。来自 Setting System Properties :

<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>

关于maven-2 - 为 Maven 项目指定系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3231797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com