我在最近的项目中使用过MAVEN,我现在也想继续使用它,因为我正在使用SVN Repository 发布的项目检查特定结构( ANT + IVY相关)允许build.xml
(项目根目录)/
,而不是pom.xml
。
我可以将pom.xml
放入/src
吗?
我是否应该在pom中修改它以使其了解这一点?
答案 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。