在pom.xml中切换元素的最佳方法

时间:2017-08-17 04:01:46

标签: 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</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>

按JRE版本切换元素的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

一种方法是使用Maven配置文件(有关详细信息,请参阅this)。这背后的想法是使用属性而不是具体值,并使用特定JRE配置文件中的不同值初始化它们。

要激活特定的配置文件,请将 -P 附加到maven命令(例如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>

答案 1 :(得分:2)

我建议让maven handle that on it's own这意味着定义一个这样的个人资料:

# Set up modules and stimuli
from psychopy import visual, event
win = visual.Window()
stim = visual.TextStim(win, text='I\'m a stimulus!')
feedback = visual.TextStim(win, text='')

for frame in range(5*60):  # Run for 5 seconds on a 60 Hz monitor
    # Change stimulus dynamically
    stim.pos += (0.001, 0.002)  # Change position
    stim.color -= 0.005  # Make darker

    # Feedback based on response
    key = event.getKeys()
    if key:
        feedback.text = 'Last key was %s' %key[0]

    # Show it
    stim.draw()
    feedback.draw()
    win.flip()