我使用maven创建了自己的.jar文件。它需要一些库。所有这些都添加在自定义.jar的pom.xml中,但我有一个问题!当我将我的jar添加到项目时,没有必要的库添加到项目的Maven依赖项。我不想创建具有依赖关系的jar。我相信在jar中下载所有必需的lib是不好的解决方案。我是maven的新手,所以请帮助找到解决方案。这是我的jar的pom.xml:
<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>ReportBuilder</groupId>
<artifactId>ReportBuilder</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>ReportBuilder</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>net.masterthought</groupId>
<artifactId>cucumber-reporting</artifactId>
<version>0.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
答案 0 :(得分:1)
根据您当前的规范,使用<scope>system</scope>
并指定jar
文件的路径,您只包含一个没有任何依赖关系的jar。 Maven无法了解依赖关系,因为jar文件本身不包含此信息,并且maven无法通过此配置访问pom.xml
(用于构建jar文件)。
只有在maven可以访问依赖jar的pom.xml
中指定的依赖关系信息时,才能解析传递依赖关系。要使其可访问,您需要将依赖项目安装到本地maven存储库(位于~/.m2/repository
)中。您可以使用maven目标install
来实现此目的。例如:
mvn -DskipTests clean install
目标install
在package
之后执行,并将构建的jar文件和依赖关系元信息(从pom.xml
中提取)复制到本地maven存储库中。
安装依赖项目后,可以将其包含在任何其他项目中,例如常规依赖项:
<dependency>
<groupId>ReportBuilder</groupId>
<artifactId>ReportBuilder</artifactId>
<version>0.0.1</version>
</dependency>
Maven查找本地存储库中的所有依赖项。当你安装它时,maven会找到它 - 包括有关可以立即解决的传递依赖的信息。