使用自定义jar文件时,我没有传递依赖项

时间:2015-09-07 14:51:24

标签: java xml eclipse maven jar

我使用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>

1 个答案:

答案 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

目标installpackage之后执行,并将构建的jar文件和依赖关系元信息(从pom.xml中提取)复制到本地maven存储库中。

安装依赖项目后,可以将其包含在任何其他项目中,例如常规依赖项:

<dependency>
  <groupId>ReportBuilder</groupId> 
  <artifactId>ReportBuilder</artifactId>
  <version>0.0.1</version>
</dependency>

Maven查找本地存储库中的所有依赖项。当你安装它时,maven会找到它 - 包括有关可以立即解决的传递依赖的信息。