我需要运行 Mavenpom.xml
位于与项目其余部分不同的目录中的文件来运行 Maven。
例如:
\n. maven-f-sample git:(main) \xe2\x9c\x97 tree . \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 etc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pom.xml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 java\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 org\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 example\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Main.java\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 resources\n
Run Code Online (Sandbox Code Playgroud)\n当我mvn
从项目的根目录运行时,mvn compile -f etc/pom.xml
它需要src
目录etc/src
.
我知道我可以修改源目录和目标目录pom.xml
:
<build>\n <sourceDirectory>../src</sourceDirectory>\n <directory>../target</directory>\n</build>\n
Run Code Online (Sandbox Code Playgroud)\n但由于其他插件可能依赖于其他目录src
我认为这不是一个可靠的解决方案。
有没有一个技巧可以让 Maven 使用位于执行命令的同一目录中的源,或者使用另一个选项设置项目目录,而不修改pom.xml
?
如果您想知道“为什么”?
\n我意识到这不是使用 Maven 的典型方式 - 我专门需要它来在运行时生成自定义pom.xml
。现在它在项目目录中创建它,pom.xml.tmp
但理想情况下它会在/tmp
.
虽然它不符合标准目录布局,但您可以尝试像这样调用maven:
mvn verify "-Dbasedir=$PWD" "-Dmaven.multiModuleProjectDirectory=$PWD"
Run Code Online (Sandbox Code Playgroud)
然而,这尚未经过测试,它是一个内部 API,正如 Karl Heinz 在评论中指出的那样。请不要使用它,尤其不要期望支持此配置。
也就是说:如果它不起作用,请不惜一切代价尝试遵守目录布局。
另请注意,某些插件仍然无法使用此配置:它们可能会添加具有不同逻辑的其他目录。
也就是说,解决方案(遗憾的是)只有:请修复您的项目。也许您可以将该文件链接到基本目录?
归档时间: |
|
查看次数: |
1447 次 |
最近记录: |