close

  專案處境:某客戶長期使用JDK 1.4開發,預計未來(不知要等多久)升級JDK 5.0,而JUnit 4.x版需要用到JDK 5.0的注釋。需求是如何使用Maven在測試時使用JDK 5.0,交付war檔或jar檔是使用JDK 1.4編譯。

  經分析,開發時仍需使用JDK 5.0,才能引入JUnit 4.x,開發過程就避免使用JDK 5.0的語法。是故可以設定不同的Profile。在<Project>根節點加以下內容:

<profiles>
    <profile>
        <id>jdk14</id>
        <activation>
            <jdk>1.4.2</jdk>
       </activation>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                       <source>1.4</source> <!-- 編譯、打包均用JDK 1.4 -->
                       <target>1.4</target>
                       <skip>true</skip> <!-- 跳過test phase -->
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

command是mvn clean install -Pjdk14。平常開發是用預設的JDK 5.0,命令是mvn clean install,所以src/test目錄下所有的測試碼要先能被編譯再來被測試無誤後,才能往下打包。而mvn clean install -Pjdk14則是改用JDK 1.4編譯,在<skip>true</skip>下src/test下所有測試碼不會被編譯,也就不會無法識別JDK 5.0特有的語法注釋。訊息大概如下:

[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Not compiling test sources
[INFO] [surefire:test {execution: default-test}]
[INFO] No tests to run.
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: D:\workspace\demo\target\app.jar

arrow
arrow
    全站熱搜

    Jemmy 發表在 痞客邦 留言(0) 人氣()