繁体   English   中英

Maven不会部署依赖项

[英]Maven won't deploy dependencies

我有一个简单的项目,有3个依赖项,但出于某种原因,当我从eclipse运行时运行 - > maven install。 我没有得到依赖。 不在快照罐里面,不在外面......任何想法? 这是我的pom:

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com</groupId>
  <artifactId>trade</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>trade</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.12</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

(...)我没有得到依赖。 不在快照罐里面,不在外面......任何想法?

是的:对于带有jar包装的项目,这不应该发生。 创建的jar“only”包含项目中的类,在编译和测试执行期间“仅”使用依赖项。

介绍到依赖机制

依赖范围

依赖范围用于限制依赖的传递性,还用于影响用于各种构建任务的类路径。

有6个范围可用:


  • 这是默认范围,如果未指定,则使用此范围。 编译依赖项在项目的所有类路径中都可用。 此外,这些依赖项将传播到依赖项目。
  • 提供
    这很像compile,但表示您希望JDK或容器在运行时提供依赖性。 例如,在为Java Enterprise Edition构建Web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。 此范围仅在编译和测试类路径中可用,并且不可传递。
  • 运行
    此范围表示编译不需要依赖项,但是用于执行。 它位于运行时和测试类路径中,但不是编译类路径。
  • 测试
    此范围表示正常使用应用程序不需要依赖关系,并且仅可用于测试编译和执行阶段。
  • 系统
    此范围与提供的类似,只是您必须提供明确包含它的JAR。 工件始终可用,并且不会在存储库中查找。
  • 导入 (仅适用于Maven 2.0.9或更高版本)
    此范围仅用于<dependencyManagement>部分中类型为pom的<dependencyManagement> 它表示应该用POM的<dependencyManagement>部分中的依赖项替换指定的POM。 由于它们被替换,具有导入范围的依赖性实际上不参与限制依赖性的传递性。

...

如果要构建包含依赖项的独立可执行jar,请考虑使用Maven Assembly Plugin和预定义的jar-with-dependencies描述符。 看看以前的这些答案:

其他选项包括maven shade插件onejar-maven-plugin 对于简单的用例,我建议使用程序集插件。

你选择了一种罐子包装。 因此,包中不会存在依赖关系。

在构建程序包并执行编译阶段时,Maven已经将依赖项下载到本地Maven存储库(通常位于主目录下的.m2目录中)。

如果您希望将依赖项打包在发行版中,则EAR / WAR文件是更好的方法,这仅适用于Java EE应用程序,而不适用于独立的Java SE应用程序。

此外,尽管涉及EAR / WAR打包方案,但不会打包某些依赖项。 这是由于应用于依赖项的范围。 具有测试范围的JUnit永远不会打包,因为它的使用仅限于测试执行。

首先,确保您可以 Eclipse 之外构建项目。 在命令提示符下,尝试'mvn install'。 那应该把你的deps放在$ HOME / .m2 / repository下面。 如果是,那么问题在于Eclipse。

如果您的目标是将您的deps打包到您的存档,则需要查看程序集和/或依赖项插件。

另外,我建议安装m2eclipse

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM