我可以在Maven中将未打包的项目用作依赖项吗?

我可以在Maven中将未打包的项目用作依赖项吗?,maven,maven-3,Maven,Maven 3,m2eclipse插件有一个项目选项“Resolve dependencies from Workspace projects”,它告诉下游Maven项目使用上游依赖项的target/classes目录,而不是使用打包的JAR。有没有办法告诉mvn做同样的事情 例如,如果我有两个项目,foo和bar,并且bar依赖于foo,那么在运行bar之前,我必须在命令行上打包并安装foo: cd ~/foo mvn package install cd ~/bar mvn prepare-package

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

例如,如果我有两个项目,
foo
bar
,并且
bar
依赖于
foo
,那么在运行
bar
之前,我必须在命令行上打包并安装
foo

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
存储库?

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

PROJ
  + foo
  + bar
而且,有了这样的结构,您不应该单独构建foo和bar。只需在项目级别进行构建,一切都很好。依赖关系在reactor中解决,您不需要显式地逐个安装它们

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

你的第二个论点不成立。事实上,您不应该将命令行目标目录与Eclipse混合使用。Eclipse中的许多功能对输出文件夹中的外部更改很敏感。如果您执行了您提到的操作(保存在eclipse中,并希望在命令行构建中获取更新的类文件),那么命令行构建将“损坏”(在eclipse的视角中)输出数据,并在eclipse中导致问题。(这就是为什么人们想出了分离输出文件夹的方法:)