mvn包不会为具有编译范围的依赖项创建jar

时间:2019-01-08 18:36:14

标签: java maven jar

我来自Gradle,现在将我的一个项目切换到Maven。 Gradle自动为具有<scope>compile</scope>的那些依赖项创建了jar,但看来Maven不会这样做吗?有没有办法告诉Maven为我的范围编译依赖项创建jar?

这是我的pom.xml的一小段,我希望在其target文件夹中的某个位置创建罐子

<dependencies>
    <dependency>
        <groupId>com.yubico</groupId>
        <artifactId>yubico-validation-client2</artifactId>
        <version>3.0.2</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.unboundid</groupId>
        <artifactId>unboundid-ldapsdk</artifactId>
        <version>4.0.8</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.mashape.unirest</groupId>
        <artifactId>unirest-java</artifactId>
        <version>1.4.9</version>
        <scope>compile</scope>
    </dependency>
<dependencies>

1 个答案:

答案 0 :(得分:0)

看起来没有办法像Gradle那样优雅地处理此问题。我必须使用maven-dependency-plugin手动导入依赖关系,以为启动应用程序时发现的每个依赖关系(即所有具有compile范围的依赖关系)创建jar。

因此,对于<dependency>范围内的每个compile块,我不得不在<artifactItem>内使用maven-dependency-plugin,这是rollbar的示例:

<dependency>
    <groupId>com.rollbar</groupId>
    <artifactId>rollbar-java</artifactId>
    <version>1.4.0</version>
    <scope>compile</scope>
</dependency>

这对我有用:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
        <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
                <goal>copy</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <artifactItems>
            <artifactItem>
                <groupId>com.rollbar</groupId>
                <artifactId>rollbar-java</artifactId>
                <version>1.4.0</version>
                <type>jar</type>
            </artifactItem>
        </artifactItems>
    </configuration>
</plugin>