【问题标题】:How to build java 9 dependencies from maven dependencies如何从 Maven 依赖项构建 java 9 依赖项
【发布时间】:2017-11-02 16:53:06
【问题描述】:

Java9 引入了类似于 OSGI 和 Maven Dependecies 的强大模块化。

是否有 maven 插件能够构建检查 maven 依赖项的 java 9 依赖项?

例如,来自

<groupId>com.mycompany.app</groupId>
<artifactId>my-module</artifactId>
....
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.3-jre</version>
</dependency>

到

module my-module{
    requires com.google.guava;
    exports com.mycompany.app; 
}

我读过这篇文章,但它不是那么有用 - How to express dependency in maven on java ee features for transition to Java 9?

【问题讨论】:

标签: java maven java-9 modularity module-info


【解决方案1】:

为了准确地回答这个问题,module-info 中的模块名称(如com.google.guavaper say)被称为自动 模块名称。通常,如果您的应用程序已经有一个带有 Java 8 的 jar,那么假设 yourApp.jar 具有上述 maven 配置。您可以将jdeps tool 用作:-

jdeps --generate-module-info <output-dir> /path/to/yourApp.jar

这将为您的 jar 生成 module-info.java,您可以在将同一项目迁移到 Java 9 时进一步使用它。

名称为maven-jdeps-plugin 的当前对应插件似乎不支持此任务。虽然它仍然是 Work in Progress 并且这可能会起作用,如果所有者认为在 Maven 工作流程中引入有效的话。

编辑 ::万一您发现该任务有用,可以通过MJDEPS tracker.请求该功能

【讨论】:

    【解决方案2】:

    这个 github repo https://github.com/moditect/moditect 中有一个插件允许这样做。

    在您的示例中,将以下内容放入 Maven 构建中:

    <plugin>
      <groupId>org.moditect</groupId>
      <artifactId>moditect-maven-plugin</artifactId>
      <version>1.0.0.Alpha2</version>
      <executions>
        <execution>
          <id>add-module-infos</id>
          <phase>package</phase>
          <goals>
            <goal>add-module-info</goal>
          </goals>
          <configuration>
            <module>
              <moduleInfo>
                <name>com.mycompany.app.my.module</name>
              </moduleInfo>
            </module>
          </configuration>
        </execution>
      </executions>
    </plugin>
    

    在target/moditect 下你可以找到生成的module-info.java

    【讨论】:

    • 链接没问题。但是你可以发布一些细节,让你的答案更好
    • 通过一些细节改进了答案
    猜你喜欢
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2011-10-29
    • 2023-03-13
    • 1970-01-01
    • 2021-07-10
    • 2021-05-14
    • 1970-01-01
    相关资源
    最近更新 更多