Java 在pom.xml中切换元素的最佳方法
我想按JRE版本切换Java 在pom.xml中切换元素的最佳方法,java,maven,Java,Maven,我想按JRE版本切换pom.xml中的元素。现在,如果我使用JRE 7构建,我总是按如下方式切换注释: <dependency> <groupId>org.apache.derby</groupId> <artifactId>derby</artifactId> <!-- If using JRE 7 --> <!--<version>10.12.1.1</versio
pom.xml
中的元素。现在,如果我使用JRE 7构建,我总是按如下方式切换注释:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<!-- If using JRE 7 -->
<!--<version>10.12.1.1</version>-->
<!-- If using JRE 8, no need to set version -->
</dependency>
...
<jvmArguments>
<!-- If using JRE 7 -->
<!-- -XX:MaxPermSize=64m -Xloggc:logs/gc.log -->
<!-- If using JRE 8 -->
-XX:MaxMetaspaceSize=64m -Xloggc:logs/gc_%p_%t.log
</jvmArguments>
org.apache.derby
德比
...
-XX:MaxMetaspaceSize=64m-Xloggc:logs/gc_%p_%t.log
通过JRE版本切换元素的最佳方法是什么?一种方法是使用Maven概要文件(有关详细信息,请参阅)。这背后的想法是使用属性而不是具体的值,并在特定的JRE概要文件中使用不同的值初始化它们 要激活一个特定的概要文件,您需要在maven命令中附加-p(例如mvn-Pjre7包) 下面,您可以找到两个配置文件的可能示例定义
<project>
...
<profiles>
<!-- JRE 7 specific config elements -->
<profile>
<id>jre7</id>
<properties>
<jvm.args>-XX:MaxPermSize=64m -Xloggc:logs/gc.log</jvm.args>
<derby.version>10.12.1.1</derby.version>
</properties>
</profile>
<!-- JRE 8 specific config elements -->
<profile>
<id>jre8</id>
<!-- activates jre8 by default -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<jvm.args>-XX:MaxMetaspaceSize=64m -Xloggc:logs/gc_%p_%t.log</jvm.args>
<derby.version>USE_REQUIRED_JRE8_DERBY_VERSION</derby.version>
</properties>
</profile>
</profiles>
<dependencies>
...
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>${derby.version}</version>
</dependency>
...
</dependencies>
...
<jvmArguments>
${jvm.args}
</jvmArguments>
<project>
...
jre7
-XX:MaxPermSize=64m-Xloggc:logs/gc.log
10.12.1.1
jre8
真的
-XX:MaxMetaspaceSize=64m-Xloggc:logs/gc_%p_%t.log
使用所需的JRE8版本
...
org.apache.derby
德比
${derby.version}
...
...
${jvm.args}
一种方法是使用Maven配置文件(有关详细信息,请参阅)。这背后的想法是使用属性而不是具体的值,并在特定的JRE概要文件中使用不同的值初始化它们
要激活一个特定的概要文件,您需要在maven命令中附加-p(例如mvn-Pjre7包)
下面,您可以找到两个配置文件的可能示例定义
<project>
...
<profiles>
<!-- JRE 7 specific config elements -->
<profile>
<id>jre7</id>
<properties>
<jvm.args>-XX:MaxPermSize=64m -Xloggc:logs/gc.log</jvm.args>
<derby.version>10.12.1.1</derby.version>
</properties>
</profile>
<!-- JRE 8 specific config elements -->
<profile>
<id>jre8</id>
<!-- activates jre8 by default -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<jvm.args>-XX:MaxMetaspaceSize=64m -Xloggc:logs/gc_%p_%t.log</jvm.args>
<derby.version>USE_REQUIRED_JRE8_DERBY_VERSION</derby.version>
</properties>
</profile>
</profiles>
<dependencies>
...
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>${derby.version}</version>
</dependency>
...
</dependencies>
...
<jvmArguments>
${jvm.args}
</jvmArguments>
<project>
...
jre7
-XX:MaxPermSize=64m-Xloggc:logs/gc.log
10.12.1.1
jre8
真的
-XX:MaxMetaspaceSize=64m-Xloggc:logs/gc_%p_%t.log
使用所需的JRE8版本
...
org.apache.derby
德比
${derby.version}
...
...
${jvm.args}
我建议让这意味着定义如下配置文件:
-XX:MaxMetaspaceSize=64m-Xloggc:logs/gc_%p_%t.log
使用所需的JRE8版本
...
1.7
-XX:MaxPermSize=64m-Xloggc:logs/gc.log
10.12.1.1
我建议让这意味着定义如下配置文件:
-XX:MaxMetaspaceSize=64m-Xloggc:logs/gc_%p_%t.log
使用所需的JRE8版本
...
1.7
-XX:MaxPermSize=64m-Xloggc:logs/gc.log
10.12.1.1
谢谢。我会试试的。我认为这是最好的办法!非常感谢。我会试试的。我认为这是最好的办法!