2017-09-14 36 views
13

Buduję swój projekt z maven i . Dodałem w moim pliku pom.xml:- moduły -add tylko w kompilacji

<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> 

Ale nadal, aby uruchomić aplikację muszę uruchomić go tak:

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

Czy istnieje sposób, aby zbudować aplikację do uruchomienia od wiersz polecenia bez --add-modules java.xml.bind do argumentów linii poleceń java?

+0

co myślę, ale może źle, to, co zrobiłeś w 'maven-compiler-plugin' jest tylko dla kompilatora' javac', który jest również używany przez maven do kompilowania twojego projektu, ale nie dla środowiska wykonawczego 'java', więc musiałeś dodać' --add-modules 'do java runtime' java'. – Tiina

+0

Zgadza się, i dlatego zadałem pytanie, jak uruchomić bez dodawania '--add-modules'. – wbk

Odpowiedz

19

Zrobiłem this answer jakiś czas temu, gdy odpowiedziałem na to jako dodatkowe informacje do ujawnienia non java.se pakietów w Java-9 za pomocą Maven.

Dodana część koncentruje się w szczególności na używaniu autonomicznej wersji interfejsów API java.xml.*. Aby zaadaptować, do którego prawdopodobnie zacznie się pobierać zależność od jaxb-api:2.3.0, która może być ładowana jako moduł i może być również wykonywana ze ścieżki klasy. Zmianę trzeba zrobić to dodać następujące listy zależności:

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

ten sposób można zapewnić migrację do samodzielnych API dla modułu, a także odejście od deprecated piece of code.