java maven 编辑器,Maven compiler 插件
此插件用于對(duì)當(dāng)前項(xiàng)目的源碼進(jìn)行編譯。從3.0開臺(tái),默認(rèn)編譯器是javax.tools.JavaCompiler(如果你的java為1.6及以上版本)。如果想要強(qiáng)制使用javac,則必須配置插件選項(xiàng)forceJavacCompilerUse。另外要注意的是,目前默認(rèn)的 source 為1.5,并且默認(rèn)的target也為1.5,這與Maven時(shí)所依賴的jdk無關(guān)。如果要更改這些默認(rèn)值,則需要去設(shè)置java編譯器的 -source 和 -target 選項(xiàng)。
compile
用于對(duì)項(xiàng)目中的源碼文件進(jìn)行編譯。這個(gè)goal 默認(rèn)被綁定到了 compile phase 可以在Maven對(duì)項(xiàng)目構(gòu)建的生命周期中自動(dòng)執(zhí)行。
testCompile
用于對(duì)項(xiàng)目中的測(cè)試代碼文件進(jìn)行編譯。這個(gè)goal默認(rèn)已經(jīng)被綁定到 testCompile phase,可以在Maven對(duì)項(xiàng)目構(gòu)建的生命周期中自動(dòng)執(zhí)行。
設(shè)置java編譯器的 -source 和 -target 參數(shù)
有時(shí)候可能需要將某個(gè)項(xiàng)目編譯為與當(dāng)前使用版本不同的版本。javac 命令可以接受 -source 和 -target 參數(shù)用于對(duì)源代碼和生成的目標(biāo)字節(jié)源所運(yùn)行的java環(huán)境進(jìn)行說明,此插件也有類似的配置。
例如,如果使用的是java8語法編寫的源碼(-source 1.8),并且希望編譯的類與 JVM1.8(-target 1.8)兼容,則可以添加發(fā)下兩個(gè)屬性,它們是插件默認(rèn)參數(shù)的名稱。
[...]
1.8
1.8
[...]
或者像下面這樣直接對(duì)此插件進(jìn)行配置
[...]
[...]
org.apache.maven.plugins
maven-compiler-plugin
3.7.0
1.8
1.8
[...]
[...]
注意:僅僅設(shè)置 target 選項(xiàng),并不能保證你的代碼在指定版本的jre上運(yùn)行。設(shè)置source 選項(xiàng)也不能保證你的代碼在指定的jdk上編譯。要用特定的與用于啟動(dòng)Maven的版本不同的JKD版本編譯代碼,可以參閱下面小節(jié)的內(nèi)容。
使用其他JDK編譯
要使用不同的JDK對(duì)項(xiàng)目進(jìn)行構(gòu)建,最佳方式是使用工具鏈機(jī)制(toolchains插件)。在構(gòu)建項(xiàng)目的過程中,每個(gè)步驟都需要JDK中的一個(gè)工具來執(zhí)行,如編譯源碼,生成javadoc,運(yùn)行單元測(cè)試或生成jar。工具鏈就是用于指定JDK路徑,以集中配置的方式把指定的JDK應(yīng)用于所有插件。詳細(xì)內(nèi)容可以參閱Maven 中 toolchains插件的幫助文檔。
除了使用toolchains插件外,還可以使用compilerVersion參數(shù)指定compiler插件所使用的編譯器版本。只是必須把fork參數(shù)設(shè)置為true,它才能正常工作。
[...]
[...]
org.apache.maven.plugins
maven-compiler-plugin
3.7.0
true
true
1.3
[...]
[...]
為了避免硬編譯文件系統(tǒng)路徑,可以使用屬性。
$ {JAVA_1_4_HOME} / bin / javac executable>
然后每個(gè)開發(fā)人員在settings.xml中定義該屬性,或設(shè)置一個(gè)環(huán)境變量,以便pom.xml保持可移植性。
[...]
[...]
compiler
C:\Program Files\Java\j2sdk1.4.2_09
[...]
compiler
總結(jié)
以上是生活随笔為你收集整理的java maven 编辑器,Maven compiler 插件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。