Maven将本机添加到库路径

时间:2016-08-30 16:58:16

标签: java maven lwjgl pom.xml

我希望在我的项目中通过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>

1 个答案:

答案 0 :(得分:0)

来自插件的official documentation

  

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

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

根据文件,这些案件将被处理:

  

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

实际上整个库的jar都是{artifactId}-{version}-natives-{os}.jar的形式,但在Maven中,分类器正是{version}和文件扩展名之间的字符串:在本例中为natives-{os},以natives开头,因此由库处理。