我想通过Maven将LWJGL包含在我的项目中。我得到了.jar文件,但本机不在类路径中。

在google的帮助下,我发现我应该使用mavennatives来自动提取和复制本机。但是,mavennatives仅会找到以native-开头的本机,而LWJGL-native都具有类似{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>

最佳答案

从插件的official documentation中:


  该插件使用以natives-开头的分类器解压缩每个依赖项。


这就是您的用例,文档指向classifier元素,在您的情况下为natives-linuxnatives-windows

根据文档,将处理以下情况:


  这是默认值,当启用eparateDirs时,插件会将每个本机依赖项解压缩到名为nativesTargetDir的子目录,该子目录的名称类似于其分类器(例如:natives-windows将转到target/natives/windows


确实,整个库的jar都是{artifactId}-{version}-natives-{os}.jar的形式,但是在Maven中,分类器正是{version}和文件扩展名之间的字符串:在这种情况下,natives-{os}natives开头,因此由图书馆处理。

关于java - Maven将本地人添加到库路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39233158/

10-10 22:33