maven設定項目編碼


今天在DOS下執行mvn compile命令時報錯說缺少必要符號,事實上根本就沒有缺少,但何以如此呢,為啥eclipse在編譯時就沒有這問題呢? 
原因是編碼的問題造成的! 


eclipse在編譯的使用使用的是UTF-8,因為整個項目設置的是UTF-8格式編碼。 
當在DOS下執行mvn compile命令時,默認使用的是系統的GBK格式編碼。 


問題解決方案是在pom.xml文件中添加如下代碼 

1     <properties>  
2         <!-- 文件拷貝時的編碼 -->  
3         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
4         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>  
5         <!-- 編譯時的編碼 -->  
6         <maven.compiler.encoding>UTF-8</maven.compiler.encoding>  
7     </properties>  

或者添加如下代碼: 

 1           <plugin>  
 2                 <groupId>org.apache.maven.plugins</groupId>  
 3                 <artifactId>maven-compiler-plugin</artifactId>  
 4                 <version>3.1</version>  
 5                 <configuration>  
 6                     <source>1.5</source>  
 7                     <target>1.5</target>  
 8                     <encoding>UTF-8</encoding><!-- 指定編碼格式,否則在DOS下運行mvn compile命令時會出現莫名的錯誤,因為系統默認使用GBK編碼 -->  
 9                 </configuration>  
10             </plugin>  
11             <plugin>  
12                 <groupId>org.apache.maven.plugins</groupId>  
13                 <artifactId>maven-resources-plugin</artifactId>  
14                 <version>2.6</version>  
15                 <configuration>  
16                     <encoding>UTF-8</encoding><!-- 指定編碼格式,否則在DOS下運行mvn命令時當發生文件資源copy時將使用系統默認使用GBK編碼 -->  
17                 </configuration>  
18             </plugin>  

轉自:https://songjianyong.iteye.com/blog/1910143

 

附:

maven-compiler-plugin插件是一個Maven插件,用來編譯項目代碼;自從3.0開始默認的編譯器是javax.tools.JavaCompiler,用來編譯Java源碼;如果你想強制插件使用javac編譯器,你必須配置插件的屬性forceJavacCompilerUse;還要注意,當前默認源(source)設置為1.6,默認目標(target)設置為1.6。獨立運行Maven和JDK,可以通過source和target選項更改他們的默認值。

插件設置的各種參數信息請查看:http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#forceJavacCompilerUse

 1 <plugins>
 2     <plugin>
 3     <groupId>org.apache.maven.plugins</groupId>
 4     <artifactId>maven-compiler-plugin</artifactId>
 5     <version>2.3.2</version>
 6     <configuration>
 7         <source>1.7</source>    <!-- 源代碼使用的開發版本 -->
 8         <target>1.7</target>    <!-- 需要生成的目標class文件的編譯版本 -->
 9         <!-- 一般而言,target與source是保持一致的,但是,有時候為了讓程序能在其他版本的jdk中運行(對於低版本目標jdk,源代碼中需要沒有使用低版本jdk中不支持的語法),會存在target不同於source的情況 -->
10         <encoding>UTF-8</encoding>  <!-- 編譯是的字符編碼 -->
11     </configuration>
12     </plugin> 
13 </plugins>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM