我希望在我的项目中通过Maven包含LWJGL。我得到了.jar
个文件,但是本机不在类路径中。
在google的帮助下,我发现我应该使用mavennatives
来自动提取和复制本机。但是,mavennatives
只会找到以native-
开头的本机,而LWJGL本机的名称都只有{artifactId}-{version}-natives-{os}.jar
。
问题:如何让Maven使用正确的名称导入依赖项并提取这些本机?
我的pom.xml
:
<project ... >
...
<build>
<plugins>
...
<plugin>
<groupId>com.googlecode.mavennatives</groupId>
<artifactId>maven-nativedependencies-plugin</artifactId>
<version>0.0.7</version>
<executions>
<execution>
<id>unpacknatives</id>
<goals>
<goal>copy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
...
<dependency>
<groupId>org.lwjgl</groupId>
<artifactId>lwjgl</artifactId>
<version>3.0.0a</version>
</dependency>
<dependency>
<groupId>org.lwjgl</groupId>
<artifactId>lwjgl-platform</artifactId>
<version>3.0.0a</version>
<classifier>natives-linux</classifier>
</dependency>
<dependency>
<groupId>org.lwjgl</groupId>
<artifactId>lwjgl-platform</artifactId>
<version>3.0.0a</version>
<classifier>natives-windows</classifier>
</dependency>
</dependencies>
</project>
答案 0 :(得分:0)
来自插件的official documentation:
此插件使用以
natives-
开头的分类器解压缩每个依赖项。
这正是您的用例,文档指向classifier元素,在您的情况下为natives-linux
或natives-windows
。
根据文件,这些案件将被处理:
这是默认值,当启用separateDirs时,插件会将每个本机依赖项解压缩到nativesTargetDir的子目录,其名称与其分类器相同(例如:
natives-windows
将转到target/natives/windows
)
实际上整个库的jar都是{artifactId}-{version}-natives-{os}.jar
的形式,但在Maven中,分类器正是{version}
和文件扩展名之间的字符串:在本例中为natives-{os}
,以natives
开头,因此由库处理。