在使用maven编译时,是否有必要在/ src / main / java中使用.java文件?

我尝试将一个项目转换为一个maven …它的.java文件位于/ src / main / java之外的其他位置,当我运行maven install时,所有文件(.hbm,.xml)除了那些.class发生在我的jar子里。

这是pom.xml的构建部分:

   ${basedir}/src  **/*.java      maven-compiler-plugin  1.5 1.5 true 1.5  UTF-8      

使用上面的代码,我的jar中缺少.class文件…并且控制台上没有显示错误消息,是否需要将它们移动到/ src / main / java包结构?

还有,这种行为可能是什么原因,一些缺少依赖性?

我做了一个改变,将它们移动到src / main / java,我在控制台上得到了一些例外,但如果我“必须”将它们添加到这个“src / main / java”结构中,我仍然感到困惑……

请给我一个关于这个的想法……

谢谢

您可以将源目录配置为与以下资源相同:

  ${basedir}/src   ${basedir}/src  **/*.java     

它不是绝对必要的 – 它是可配置的 – 但是Maven带有标准化的项目布局 , 强烈建议接受它,就像其他Maven惯例一样(不要与Maven对抗,采用它)。

我知道您正在从Ant迁移到Maven,但是您在IMO上并没有走上正确的道路,让Maven适应您现有的项目结构/工作流程并不是推荐的方法:

  1. Maven强烈建议使用其约定(过度配置)来缓解事情。 不这样做会使事情变得更复杂并产生无用的配置开销。
  2. 偏离默认值时,你自己就有点了。
  3. 不使用默认值可能会导致意外不好,一些(很差)实现的插件可能使用硬编码路径(如src/main/javatarget/classes等),并且不喜欢更改默认值。
  4. 等等等

推荐的方法是将现有结构转换为maven兼容的模块化结构,并采用标准的Maven布局 。

采用Maven标准和惯例将使您的Maven生活更加轻松,从长远来看,您将获得标准化的结构,Maven非常重视。

我认为有足够的人写了类似的建议,所以我不会坚持更多。 但你应该听听这些建议(而不是坚持尝试让Maven适合你现有的结构),特别是因为你是Maven的新手。 从我的角度来看,你不是从Ant迁移到Maven,而是试图将Maven迁移到Ant构建。

也可以看看

  • 如何在5分钟内从Ant转换为Maven
  • 在五个阶段将Ant项目安全地转换为Maven

看看Super POM 。 这是你获得’大会’的地方。 如果您有不同的项目布局,则可能必须更改项目POM中的某些设置,但这不是前面提到的好建议。

到目前为止,最简单的解决方案(如果可能在您的情况下)是将代码移动到/ src / main / java,因为这是maven所期望的。 这是不可能的,你至少需要告诉maven在哪里找到来源。 从你的POM我看不到你做过的任何地方。

如果你想使用Maven,那么阻力最小的路径就是遵守Maven惯例。 当然你可以有一个不同的源路径,但它肯定更复杂(似乎唯一的方法是将源目录作为编译器参数传递 ),你获得了什么? 我相信移动源目录要容易得多。