我有以下POM条目
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>3.3.0</version>
</dependency>
当我构建项目时,它会下载以下文件:
如果您在http://download.java.net/maven/2/net/java/dev/jna/jna/3.3.0/访问存储库,则可以看到有许多其他文件。为什么Maven没有下载其他文件?
如果你打开jna-3.3.0.pom,你会看到
<plugins>
<!-- fake out maven and install the binary artifact -->
<plugin>
<groupId>org.jvnet.maven-antrun-extended-plugin</groupId>
<artifactId>maven-antrun-extended-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<!--<ant dir="." target="dist" />-->
<attachArtifact file="dist/jna.jar" />
<attachArtifact file="dist/platform.jar" classifier="platform" type="jar" />
<attachArtifact file="dist/src-mvn.zip" classifier="sources" type="jar"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
我怀疑这个问题与pom中的评论“假冒maven并安装二进制工件”有关。
答案 0 :(得分:17)
如果在现有JNA依赖项的同时向项目添加第二个依赖项,并添加了分类器,则应将该工件添加到构建中。
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>3.3.0</version>
<classifier>platform</classifier>
</dependency>
由于您现在有两个来自同一项目的工件,因此将version
元素提取到项目级属性中是明智的,以便更新它同时更新:
<properties>
<jna.version>3.3.0</jna.version>
</properties>
<dependencies>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
<classifier>platform</classifier>
</dependency>
</dependencies>
答案 1 :(得分:6)
我真的不理解@steve_barham's answer中的classifier
用法。
我在github中搜索了JNA的项目并找到了一个名为pom-jna-platform.xml
的文件,其中包含以下工件详细信息:
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>4.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
所以我只是使用以下内容来下载jna和jna平台jar:
<properties>
<jna.version>4.0.0</jna.version>
</properties>
<dependencies>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>${jna.version}</version>
</dependency>
</dependencies>
答案 2 :(得分:0)
我下载了文件并将其放在项目根目录中的lib文件夹中。接缝工作对我来说很好。如果他们发布新版本,您必须手动更新它。
<properties>
<jna.version>3.4.0</jna.version>
</properties>
<dependencies>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jna.jar</systemPath>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/platform.jar</systemPath>
<classifier>platform</classifier>
</dependency>
</dependencies>