--add-modules仅用于编译

时间:2017-09-14 13:43:22

标签: java maven jaxb java-9 maven-compiler-plugin

我正在使用maven和构建我的项目。我已添加到session.run(...)文件中:

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 的命令行运行到java命令行参数?

1 个答案:

答案 0 :(得分:32)

前一段时间我做了this answer我在这里回答了这个问题,作为使用Maven在Java-9中公开非java.se包的附加信息。

增加的部分专注于使用独立版本的 java.xml.* API。为了适应这种情况,你可以开始消耗对 jaxb-api:2.3.0 的依赖,它可以作为模块加载,也可以从类路径执行。您需要进行的更改是将以下内容添加到依赖项列表中:

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

这样您就可以确保迁移到模块的独立API以及远离deprecated piece of code.