手动安装的maven依赖项在Eclipse导入中不可见

时间:2014-06-06 17:15:44

标签: java eclipse maven import dependency-injection

我已使用下面的命令安装了maven依赖

mvn install:install-file  -Dfile=d2_lib.war   -DgroupId=com.emc.d2fs -DartifactId=d2_lib  -Dversion=1.0  -Dpackaging=war -DlocalRepositoryPath="C:\Users\kumarr23\.m2\repository"

我在root pom.xml中添加了这个依赖项,如下所示

 <dependency>
            <groupId>com.emc.d2fs</groupId>
            <artifactId>d2_lib</artifactId>
            <version>1.0</version>
            <type>war</type>
            <scope>runtime</scope>

        </dependency>

我可以看到当我在最后的战争中安装罐子的时候, 当我尝试从eclipse导入这些类时,这些类不包含在内,是否有一些我遗漏的东西?

我是maven的新手,我被困在这里! 请指教

2 个答案:

答案 0 :(得分:0)

请检查您在运行命令的位置是否有d2_lib.war文件,或者在命令中提及d2_lib.war的完整路径并重试,我相信您指定的命令不是复制战争文件路径未正确定义,您可以通过检查war文件是否复制到本地maven存储库来确认这一点

mvn install:install-file -Dfile = d2_lib.war -DgroupId = com.emc.d2fs -DartifactId = d2_lib -Dversion = 1.0 -Dpackaging = war -DlocalRepositoryPath =“C:\ Users \ kumarr23.m2 \库“

答案 1 :(得分:0)

maven中有一个约定,java代码存在于.jar文件中,Web类存在于.war文件中。当您在Web项目中包含war类型的依赖项时,maven会将包含的文件视为overlay。这基本上意味着maven会将依赖项的内容打包到war文件中,但是它不会像你要查找的那样将java中的库包含在java代码中。

创建war文件时,如果创建者还希望人们获得代码所依据的java代码和传递依赖关系,他们可以使用maven-war-plugin来设置{{1}的配置标记}}。这将以 artifactId-version-classes.jar 的形式生成一个额外的工件,以及正常的 artifactId-version.war 文件。

如果将war作为叠加层并将类jar包含为普通依赖项,则可以在依赖关系树中看到maven仅从jar文件依赖项中提取传递依赖项,而不是战争。 / p>

在您的情况下,您需要找到 jar文件,并将其与war文件一起安装在本地maven存储库中。然后你可以将 jar添加到你的pom.xml中,如下所示:

旧的pom.xml

<attachClasses>true</attachClasses>

new pom.xml

<dependency>
  <groupId>com.emc.d2fs</groupId>
  <artifactId>d2_lib</artifactId>
  <version>1.0</version>
  <type>war</type>
  <scope>runtime</scope>
</dependency>