2017-09-14 49 views
13

我正在用maven和構建我的項目。我已在我的pom.xml文件:- 僅在編譯時添加模塊

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>${maven-compiler-plugin.version}</version> 
    <configuration> 
     <source>${java.version}</source> 
     <target>${java.version}</target> 
     <compilerArgs> 
      <arg>--add-modules</arg> 
      <arg>java.xml.bind</arg> 
     </compilerArgs> 
    </configuration> 
</plugin> 

但儘管如此,跑我有這樣運行它的應用程序:

java -jar --add-modules java.xml.bind my-app.jar 

有構建應用程序,從運行方式命令行沒有--add-modules java.xml.bind到java命令行參數?

+0

移開我的想法,但也許錯誤,你在'maven-compiler-plugin'中所做的只是編譯器'javac',它也被maven用來編譯你的項目,但不是用於運行時'java',所以你必須添加'--add-modules '到java運行時'java'。 – Tiina

+0

這是正確的,這就是爲什麼我問問題如何運行而不添加'--add-modules'。 – wbk

回答

19

前一段時間我製作了this answer,我回答了這個問題,作爲使用Maven在Java-9中公開非java.se包的附加信息。

添加的部分特別關注使用獨立版本的 java.xml.* API。爲了適應這種情況,你可能會開始消費對的依賴關係,它可以作爲一個模塊加載,也可以從類路徑中執行。你需要做的改變是將以下內容添加到您的依賴列表:

<dependency> 
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>2.3.0</version> 
</dependency> 

這樣可以確保遷移到獨立的模塊API以及從deprecated piece of code.