【问题标题】:generated sources of other modules其他模块的生成源
【发布时间】:2019-03-26 10:05:09
【问题描述】:

我有一个多模块 Maven 项目。我使用 maven build helper 插件自动将生成的源添加到类路径中。

我可以在 module-X 中使用 module-X 的生成源,但是,当我将 module-X 添加为 module-Y 的依赖项时,module-X 的生成源不可见,因为它们不可见包含在 X.jar 文件中。

有没有办法在jar文件中包含生成的源或者强制maven生成依赖的源?

【问题讨论】:

  • 通过 build-helper 将生成的源代码添加到类路径没有意义。我想你有一个生成代码的模块?生成的源文件不应该是 jar 文件的一部分。为此目的,存在一个名为 xyz-VERSION-sources.jar 的文件,但它不属于类路径。使用生成源的模块是定义对适当模块的简单依赖...此外,查看您的 pom 文件真的很有帮助...
  • @khmarbaise 谢谢你的解释。显然,我的方法有些问题。我正在使用具有 JPAMetaModelEntityProcessor 的 maven-processor-plugin,该 JPAMetaModelEntityProcessor 在 maven 模块的 generated-sources 文件夹下生成源。问题是,我在另一个 maven 模块中扩展了 BaseEntityModel,导致生成:public class UserEntity_ extends BaseEntityModel_ { ... }。这会产生编译错误,因为它找不到 BaseEntityModel_ 类(它在另一个 maven 模块中)。你有什么建议吗?
  • 您必须向生成代码的模块添加依赖项?你这样做了吗?
  • 奇怪的是,生成的静态元模型源不是 jar @khmarbaise 的一部分。但是,我添加了一些使用那些生成的静态元模型类的规范类,现在它们在 jar 中,我不知道如何!问题尚未解决,但暂时绕过。谢谢!

标签: java maven dependencies


【解决方案1】:

您可以明确指定生成的类应该是输出 jar 文件的一部分:

<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <includes>
            <include>generatedClassesFolderPath</include>
          </includes>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

generatedClassesFolderPath替换为生成类所在文件夹的相对路径。

更多信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多