我来自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>
答案 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>