管理Maven项目中的依赖项

时间:2013-07-24 00:46:51

标签: java eclipse maven

我有两个应该导入maven项目的JAR。我按照本教程(单击here)并将这些JAR导入我的maven项目。基本上,我在终端中执行了这段代码: mvn install:install-file -Dfile=myfile.jar -DgroupId=mygroup -DartifactId=com.mygroup.project -Dversion=1.0 -Dpackaging=jar -DlocalRepositoryPath=lib -DcreateChecksum=true 然后我将库导入我的Maven项目。

这一切都很好。但是,我导入的JAR本身应该具有很少的依赖性。据我了解,Maven自动处理内部依赖项。现在我有一个依赖项列表(包含组ID,artefact ID和版本),但我不明白我在哪里编写它们。在库的文件夹1.0中,有一个名为myjar-1.0.pom的文件。我尝试在那里编写依赖项,但它没用。

你能告诉我一种手动告诉Maven加载一些依赖项的方法吗?

我也尝试在主 pom.xml 中指定这些依赖项,但是会导致错误 - 说找不到 repo-url / dependency / file.pom 。所以我想它只需要在内部依赖中提及 - 但我无法想出一种手动定义它们的方法。我是否需要在这些库中创建一个pom.xml,或者是否有一些我错过的东西?

3 个答案:

答案 0 :(得分:0)

你可以这样做:

  1. 为你的jar编写pom,并在pom中声明依赖项。
  2. user mvn install:install-file -Dfile = path-to-your-artifact-jar -DomomFile = path-to-pom to install jar。
  3. link:http://maven.apache.org/plugins/maven-install-plugin/examples/custom-pom-installation.html

答案 1 :(得分:0)

假设您有以下JAR和依赖项:

myMavenProject
--> library1.jar
    --> library2.jar
    --> library3.jar

(我假设您的library1library2library3不是Maven项目)

对于每个library1library2library3,执行mvn install:install-file,就像之前所做的那样:

mvn install:install-file -Dfile=library1.jar -DgroupId=com.mygroup.project -DartifactId=library1 -Dversion=1.0 -Dpackaging=jar

(请注意,我在这里交换了您的groupIdartifactId

然后在您的Maven项目中,更新您的pom.xml以获得以下内容:

<dependency>
    <groupId>com.mygroup.project</groupId>
    <artifactId>library1</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>com.mygroup.project</groupId>
    <artifactId>library2</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>com.mygroup.project</groupId>
    <artifactId>library3</artifactId>
    <version>1.0</version>
</dependency>

除非您有非常具体的要求,否则我不确定您为什么要为Maven提供-DlocalRepositoryPath=lib额外选项而不使用本地M2存储库。

答案 2 :(得分:0)

您所关注的教程可能正在运行,但它不是The Maven Way!如果您将遵循这条道路,那么您将一直遇到麻烦!

您最好阅读maven user centermaven books and resources页面中的一些教程。 Maven:定义指南例如可以在线免费获取。

为什么你目前关注的方法并不好,斯蒂芬·康诺利(Stephen Connolly)在他very good blog post上提到了你如何做得更好(斯蒂芬是一位积极的专家开发人员)。