我正在使用maven和java-9构建项目。我已在pom.xml文件中添加:
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命令行参数?
--add-modules java.xml.bind
不久前,我做了这个回答,在此我作为java.se使用Maven 公开Java-9 中非软件包的附加信息进行了回答。
java.se
添加的部分专门针对使用独立版本的 java.xml.*API。为了适应这种情况,您可能开始消耗依赖项 jaxb- api:2.3.0 ,可以将其作为模块加载,也可以从类路径执行。您需要进行的更改是将以下内容添加到依赖项列表中:
java.xml.*
jaxb- api:2.3.0
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency>
这样,您可以确保迁移到该模块的独立API并远离已弃用的代码段。