java 如何在与项目源文件不同的位置使用pom.xml运行Maven

kcugc4gi  于 2022-12-25  发布在  Java
关注(0)|答案(2)|浏览(139)

我需要使用pom.xml文件运行Maven,该文件位于与项目其余部分不同的目录中。
例如:

.  maven-f-sample git:(main) ✗ tree .         
├── etc
│   └── pom.xml
└── src
    └── main
        ├── java
        │   └── org
        │       └── example
        │           └── Main.java
        └── resources

当我使用mvn compile -f etc/pom.xml从项目的根目录运行mvn时,它预期etc/src中的src目录。
我知道可以使用以下命令修改pom.xml中的源目录和目标目录:

<build>
    <sourceDirectory>../src</sourceDirectory>
    <directory>../target</directory>
</build>

但是由于其他插件可能依赖于src以外的其他目录,我认为这不是一个可靠的解决方案。
是否有技巧让Maven使用位于执行命令的同一目录中的源代码,或者使用另一个选项设置项目目录,而不修改pom.xml

  • 如果你想知道"为什么"*

我意识到这不是使用Maven的典型方式-我需要它专门用于Just,在运行时生成自定义pom.xml。现在它在项目目录中创建为pom.xml.tmp,但理想情况下它将在/tmp中创建。

vfh0ocws

vfh0ocws1#

实际上,我只想改变源目录和目标目录(通过使用命令行参数)。我不知道有什么插件可以解决这个问题。
当然,您需要对此进行大量测试,因为您可能会打破假设。

pbgvytdp

pbgvytdp2#

虽然它不符合the standard directory layout,但您可以尝试像这样调用maven:

mvn verify "-Dbasedir=$PWD" "-Dmaven.multiModuleProjectDirectory=$PWD"

然而,这是未经测试的,正如Karl海因茨在评论中指出的,这是一个内部API。请不要使用它,尤其不要期望支持这种配置。
也就是说:如果它不起作用,请尝试遵守目录布局,而不是不惜任何代价。
另请注意,某些插件在此配置下仍然无法工作:他们可以添加具有不同逻辑的其他目录。
也就是说,解决办法(可悲的是)只有:请修复你的项目。2也许你可以把文件链接到基目录?

相关问题