2017-03-31 39 views
0

1)我在Maven的Eclipse中的pom.xml项目中包含了一个Spring Context依赖项。在Maven中,我的最终构建和安装的.JAR中包含了依赖项二进制文件吗?

2)我跑项目上的“安装”阶段,并妥善建成,该项目被安装到我的本地库的.m2

3)当我拉开我的.JAR,我只看到我的单我创建的自定义类。

这带来了两个问题:

1)外部的依赖类只在您的最终建成罐子如果从它一类的类中物理实例包括在内?

2)为什么,当我进口SpringContextAnnotationConfig类到类,并实例化它的一个实例,并安装我的项目,我还是只看到了我的自定义类,当我拉开我的.JAR。这是不寻常的吗?或者,SpringContextAnnotationConfig现在刚刚写入.class二进制文件,因此当我将.jar部署到另一个JVM时,它在我的定制构建的.class二进制文件中拥有它的所有依赖关系?

感谢

SOLUTION

的问题是,我期待行家为一个JAR输出做同样的,因为它会为一场战争。当使用webapp archetype生成WAR文件时,Maven自动将所需的依赖项jar打包到WEB-INF目录中。

我基本上试图了解远程全新服务器上的容器如何运行我的类,而无需依赖项二进制文件。我试图运行一个用于生成JAR文件的maven,而这个文件并没有包含我的依赖关系。但是,当我运行maven install来构建一个WAR文件时,我的依赖关系已经准备好部署了。

+0

1)是和2)除非你真的创建了一个可执行的jar或war文件,这些库将不会被包含。它只是注册依赖关系,但只包含在打包的.war或.jar中。 – rptmat57

+0

jar将仅为您的代码库创建。因为外部依赖关系本身不需要再创建。你可以使用zip压缩包。运行时将所有依赖关系添加到classpath – jos

回答

2
  1. 不,它们从不包含(除非你使用了一个特殊的插件)。

  2. 请1.

如果你作为一个依赖添加此神器一些其他的项目,它的依赖(和它们的依赖等)将被自动添加(这是可控的,这样你就可以例如排除它们或更改版本)。但它们取自pom.xml,而不取自.jar本身。这也允许不下载相同的库很多次。

对于建设脂肪罐,见例如How can I create an executable JAR with dependencies using Maven?。特别是春季你可能想要Spring Boot

相关问题