是否可以在子目录中定义pom.xml(而不是在项目根目录中)?

时间:2015-11-30 14:44:21

标签: java maven svn maven-3 pom.xml

我在最近的项目中使用过MAVEN,我现在也想继续使用它,因为我正在使用SVN Repository 发布的项目检查特定结构( ANT + IVY相关)允许build.xml(项目根目录)/,而不是pom.xml

我可以将pom.xml放入/src 吗?

我是否应该在pom中修改它以使其了解这一点?

3 个答案:

答案 0 :(得分:2)

  

在运行maven时尝试使用选项-f

mvn -f src/pom.xml
     

我个人没有试过这个,但希望它能起作用。

但是,为什么?

我建议你再次停下来重新考虑你的要求。 maven的一个优点是它的默认配置。一旦按照maven规定的标准进行操作,就不会遇到各种插件等问题。

EDIT。

我试过看到我的第一个建议不起作用。为了使其工作,您必须更新其他参数,例如来源地点。我仍然相信这是可能的,但我会建议你别的。

如果SVN不允许您将其放在其他位置,请将您的pom.xml放到源文件夹中。还要创建批处理文件或shell脚本(取决于您的平台),将pom.xml复制到根目录,运行mvn,然后从根目录中删除pom.xml。恕我直言这个解决方案清晰简单。

答案 1 :(得分:1)

是的,您可以使用 String alternatePomFile = null; if ( commandLine.hasOption( CLIManager.ALTERNATE_POM_FILE ) ) { alternatePomFile = commandLine.getOptionValue( CLIManager.ALTERNATE_POM_FILE ); // -f } ... if ( alternatePomFile != null ) { File pom = resolveFile( new File( alternatePomFile ), workingDirectory ); if ( pom.isDirectory() ) { pom = new File( pom, "pom.xml" ); } request.setPom( pom ); } 选项选择pom所在的目录。有关详细信息,请参阅maven的来源:

factory

答案 2 :(得分:1)

应该有几种(邪恶的)方法绕过钩子所施加的限制,而我们正在寻找的是较小的邪恶。 关键要求是: - 你必须使用ANT / IVY结构。 - 你的pom.xml没有正式的Maven结构。 - 你必须使用Maven。

如果我真的没有其他选择,我会创建一个ant任务来复制文件 从某个地方我可以将它合法地保存到它原本应该找到的地方。 请参阅:https://ant.apache.org/manual/Tasks/copy.html

一个运行maven的蚂蚁任务。 请参阅:How to call for a Maven goal within an Ant script?

每个人都会使用这个完成这两个步骤的蚂蚁脚本。 我将在自述文件中描述此过程并解释为什么必须这样做。

优点:自动化,清晰的解决方案,可以在以后轻松转换为maven项目。创建pom.xml之后,可以使用MAVEN。但是,我建议您始终使用ant来调用MAVEN,以避免必须手动监视pom.xml中的更改。 (在更新pom.xml之后,您需要至少调用一次ANT。)

缺点:一组程序员需要熟悉这个非正式过程,也使用ANT。