0

m2eclipse 插件有一个项目选项“Resolve dependencies from Workspace projects”,它告诉下游 Maven 项目使用target/classes上游依赖项的目录而不是使用打包的 jars。有没有办法告诉mvn做同样的事情?

例如,如果我有两个项目,foo并且barbar依赖于foo,那么在命令行上我必须先打包并安装foo,然后才能运行bar

cd ~/foo
mvn package install
cd ~/bar
mvn prepare-package
java -cp target/classes:$(mvn -o -q -Dmdep.outputFile=/dev/stdout dependency:build-classpath) Bar

但我想避免打包所有项目,因为 1)它有很多冗余 I/O,以及 2)如果我保存在 Eclipse 中并从命令行运行,很容易忘记再次打包所有项目,然后我'会浪费时间想知道为什么我的更改不起作用。

那么有什么方法可以改变pom.xml,以便mvn命令使用解压缩的类mvn prepare-package而不是mvn install存储库?

4

1 回答 1

0

为什么不将 foo 和 bar 放在这样的多模块项目中:

PROJ
  + foo
  + bar

而且,使用这种结构,您不应该分别构建 foo 和 bar。只需在 PROJ 级别构建,一切都很好。依赖关系在反应器中解决,您不需要显式地一一安装。

它没有保存您提到的“额外 IO”,但老实说,唯一的区别只是创建 JAR,与发生的其他事情相比,它实际上是最小的。

你的第二个论点也不成立。事实上,您不应该将命令行目标目录与 Eclipse 混合。Eclipse 中的许多特性对输出文件夹中的外部变化很敏感。如果您执行您提到的操作(保存在 Eclipse 中,并希望在命令行构建中获取更新的类文件),那么命令行构建将“破坏”(在 Eclipse 的角度)输出数据并导致 Eclipse 出现问题。(这就是为什么人们想出方法来分隔输出文件夹:https ://stackoverflow.com/a/54366009/34088 )

于 2012-07-31T04:45:06.860 回答