2013-03-20 73 views
1

我们使用Mavenm2e工具,为我们的发展,今天我们遇到的一个问题。Maven和M2E - 构建罐子依赖信息

我们的一个项目,是需要其他项目小型图书馆,所以我们打包成jar文件,并把我们的私人Maven库。

现在,所有我们把这个仓库没有任何外部依赖的罐子,但这个库我提到的使用一些外部罐。

现在,当我加入这个罐子等劲歌信息,这个罐子是从我们的私人信息库下载,但Maven的不下载这个罐子所需的依赖。

我想知道如果我需要使用一些特殊的目标/添加一些东西到我的pom.xml文件,这将通知Maven包括有关此工件所需的依赖关系的信息。

编辑: 这里是当我上​​传罐子我们的私人信息库我进行工作流程:

1.I产生使用m2e

2. mvn install:install-file -DgroupId=<your_group_name> -DartifactId=<your_artifact_name> -Dversion=<snapshot> -Dfile=<path_to_your_jar_file> -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true

3.I从Eclipse jar文件复制我的本地库中创建文件夹,远程仓库

+0

做其他项目也用maven吗? – Lucas 2013-03-20 14:59:58

+0

正确的方法是建立一个使用经典'mvn deploy'而不是手动安装jar的库。生成的pom(请参阅'-DgeneratePom = true')将是最低限度的,并将*不包括依赖性信息。 – 2013-03-20 15:03:54

回答

3

如果你的小型图书馆是一个maven项目,应该没有理由让eclipse生成jar,然后使用maven来安装它,然后手动复制到远程repo。相反,你应该使用M2E运行部署目标:

mvn deploy 

这将导致罐子得到建立,然后直接安装到本地Maven回购然后将其部署到远程回购。

在Eclipse中,这可以通过右键点击你的项目,选择Run As -> Maven Build...然后在运行配置窗口Goals输入型deploy然后单击Run来完成。完成一次后,您可以使用Run As -> Maven Build再次运行相同的配置。

+0

将目标更改为在远程存储库上进行部署后,我的依赖项按照它们应该下载的方式下载,但m2e中存在小问题。当我在Eclipse中展开'Maven Dependencies'时,我可以看到一些jar(包括那些应该作为我的库的依赖项添加的jar),但是库本身显示为目录,你知道什么会导致这个吗? – Andna 2013-03-20 15:41:20

+1

@Andna,依赖项显示为一个文件夹,如果您依赖的是同一个eclipse工作区中的版本是当前版本的项目。例如,如果在工作区中有'DependencyA'版本为'1.1.0-SNAPSHOT',并且项目'ProjectA'在同一个工作区中取决于版本'1.1.0-SNAPSHOT',它将显示一个文件夹,相反,你依赖'DependencyA'的版本'1.0.0',它会显示为一个jar。 – Lucas 2013-03-20 16:03:19

+0

谢谢,我不知道这个功能可以这么说。 – Andna 2013-03-20 21:36:02

3

我看你安装的jar文件的过程中使用-DgeneratePom=true。你需要做的是为你的神器创建一个pom.xml。在pom.xml中,您可以指定jar文件所需的依赖关系。当执行install:install插件目标时,您改为使用-DpomFile=pom.xml

+1

为什么不直接运行'mvn deploy'?他提到图书馆本身就是一个maven项目... – Lucas 2013-03-20 15:05:02

+0

@Lucas,好点。我没有注意到图书馆本身也是一个maven项目。我看到了安装:安装插件是手动使用的,并假定它的jar文件是由非maven项目提供的。 – Lan 2013-03-20 15:14:06

2

要做到这一点,最好的方法是运行mvn deploy

你不得不安装配电库到您的私人神器经理(Nexus设备或artifactory的)在你的settings.xml

看到this更多细节