2012-06-25 77 views
1

我在eclipse中有一个项目(我们称之为项目A),它是一个Maven项目。这是一个由其他项目使用的图书馆。根据本地项目构建Maven JAR

而且我有项目B,它也是一个Maven项目,它依赖于项目A.在项目B的pom.xml中,我添加了一个依赖项引用项目A,它构建并完美地从Eclipse运行。

现在我想从项目B构建一个可执行JAR。以前我通过将maven-assembly-plugin插件添加到pom.xml,然后从命令行运行mvn assembly:single来完成此操作。

当我运行项目B内部mvn assembly:single命令时,它抛出一个错误说,它不能找到项目A.

现在被打造为B中的可执行的JAR文件的最好方法?有没有一种方法可以从Eclipse构建它(假设它将处理依赖引用,因为它一直在这样做),还是有办法告诉Maven项目A是本地的,它应该使用本地项目A构建项目B.

+2

您是否使用Maven的'install'命令安装了项目A? – rolve

+0

我从来没有听说过这个命令,我现在正在寻找一个示例用法 –

+0

http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using- Maven的 看到这个链接,我认为它可以帮助.. – Sourav

回答

2

将Maven项目用作Eclipse之外的依赖项时,必须先将其安装到本地存储库中。你这样做使用install命令:

安装:将软件包安装到本地仓库,用作其他项目的依赖本地

这句话是从Maven in 5 Minutes教程。


“问题”在于Eclipse将像其他任何项目一样使用其内部编译器构建Maven项目。由于Maven依赖关系被映射到正常的Ec​​lipse依赖关系,因此您不需要install您的项目。但是,只要你实际使用Maven构建它们(即使在Eclipse中),你也可以。

+0

所有的安装示例似乎让你指向一个JAR文件,是否我的意思是我需要手动构建项目A,然后指出然后在B中安装A. Maven可能不知道构建A然后构建B? –

+1

不可以。否。Maven的所有信息是,您对某个项目具有某个组,名称和版本的依赖关系。如果它在本地存储库(在您的机器上),标准存储库(Maven Central)或在POM文件中配置的某个附加存储库中找不到它,它将不知道该做什么。 – rolve

+1

所以,是的,你只需首先安装项目A,然后就可以构建项目B. – rolve