--仅在编译时添加模块

我正在用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

有没有办法构建应用程序,从命令行运行而无需java命令行参数?--add-modules java.xml.bind


答案 1

我不久前做了这个答案,我回答了这个问题,作为使用Maven在Java-9中公开非包的附加信息。java.se

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

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

通过这种方式,您可以确保迁移到模块的独立 API,并远离已弃用的代码段。


答案 2

推荐