【问题标题】:Maven doesn't compile target/hibernate3/generated-sourcesMaven 不编译 target/hibernate3/generated-sources
【发布时间】:2011-02-24 09:33:57
【问题描述】:

谁能告诉我如何配置 maven 来编译来自 target/hibernate3/generated-sources 目录的源代码?我已经阅读了this 和其他帖子,但它们似乎并没有解决我的问题(这确实看起来微不足道)。

我使用自下而上的方法休眠配置来生成 cfg.xml、hbm.xml 和 POJO(即从现有数据库模式中自动生成完整的休眠配置)。我也只使用标准的mavenhibernate3-plugin 目录布局。然而,当我在命令行中执行mvn compile 而我的源位于src/main/java/target/hibernate3/generated-sources 中生成的源时,只有来自src/main/java 的源被编译并复制到target/classes 中。我不想在src/main/java 中生成源代码,因为我希望mvn clean 清理它们。

我想只使用command-linepluginspom.xml 来解决问题。有没有办法配置maven-compiler-plugin 这样做?还是有其他方法?

感谢您的帮助。

【问题讨论】:

  • 您到底想达到什么目标?你想从你的 .jar 中排除一些文件吗?
  • 实际上,“目标目录”部分超出了我之前回答的范围,但我意识到这可能会产生误导,我会澄清一下。

标签: hibernate maven-2 hibernate3 hbm2java


【解决方案1】:

约定是在target/generated-sources/<generator> 中生成代码,所以在你的情况下,我会在target/generated-sources/hibernate3 中生成源代码(很遗憾,hibernate3 插件默认不遵循这个约定)。无论如何,事情应该会奏效,实际上,我在this previous answer 中发布的 POM 确实有效(我重新运行了我的示例项目,它确实有效)。你能成为MHIBERNATE-104 的受害者吗?老实说,我很困惑。

作为一种解决方法,您可以使用Build Helper Maven Plugin 及其build-helper:add-source 目标将您的目录添加为源目录。有关配置示例,请参见 Usage 页面。


我正在使用您在此处提出的 pom,只是没有插入默认的构建生命周期(没有执行)。

这一定是问题的原因:如果hibernate3:hbm2java 不是构建生命周期的一部分,它就没有机会将输出目录注册为源文件夹。所以 Maven 在“正常构建”期间不会意识到它,只会忽略它。

【讨论】:

  • +1 @Pascal Thivent 你可以在从 xml 模式生成类时使用它吗?
  • @Pascal:感谢您的回答。真正让我困惑的是默认目录target/hibernate3/generated-sources 不是约定。我刚刚检查过,这两个目录都没有开箱即用,仍然只有src/main/java 被编译。也许我搞砸了其他事情,但无论如何我都会尝试第二种解决方案,这应该没有问题。
  • @c0mrade:是的,你可以(见this answerthis onethis one)。
  • @mmm 这太奇怪了。我在this answer 中发布的解决方案按原样 工作。我仔细检查了我机器上使用此配置的另一个项目,并确认它确实有效。以防万一,您使用的是什么版本的插件?
  • @Pascal:再次非常感谢。 MHIBERNATE-104 确实可以这样。不过,使用Build Helper Maven Plugin 一切似乎都还不错。实际上,没有它,即使m2eclipse -> Update Project Configuration 选项也不起作用(??),尽管这可能无关紧要。顺便说一句:我使用的正是你建议的 pom here,只是没有插入默认的构建生命周期(没有执行)。
猜你喜欢
  • 1970-01-01
  • 2015-10-20
  • 2017-01-31
  • 1970-01-01
  • 2011-07-04
  • 2020-04-07
  • 1970-01-01
  • 2014-12-28
  • 2017-12-08
相关资源
最近更新 更多