rust maven plugin 方便构建rust cargo crates 的插件

rust maven plugin 是questdb 团队提供的一个maven rust 插件,可以方便进行cargo 包的构建,同时还提供了jni 的包(进行jni native library 加载的)

参考使用

使用比较简单,就是配置maven 的插件信息

<build>
    <plugins>
        <plugin>
            <groupId>org.questdb</groupId>
            <artifactId>rust-maven-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
                <execution>
                    <id>rust-build-id</id>
                    <goals>
                        <goal>build</goal>
                    </goals>
                    <configuration>
                        <path>src/main/rust/your-rust-crate</path>
                        <copyTo>${project.build.directory}/classes/io/questdb/jni/example/rust/libs</copyTo>
                        <copyWithPlatformDir>true</copyWithPlatformDir>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        ...
    </plugins>
</build>

jni maven 包

<dependency>
    <groupId>org.questdb</groupId>
    <artifactId>jar-jni</artifactId>
    <version>1.1.1</version>
</dependency>

代码集成(比如lancedb 就使用了此包进行jni加载)

JarJniLoader.loadLib(Dataset.class, "/nativelib", "lance_jni");

说明

java native 访问实际方法很多,jni,jna,jnr,以及新的基于java.lang.foreign, 但是目前基于jni 还是不错的选择,同时对于java 开发,通过rust 的jni crate 是一个很不错的选择

参考资料

https://github.com/questdb/rust-maven-plugin

https://github.com/questdb/rust-maven-plugin/tree/main/jar-jni

https://github.com/lancedb/lance/blob/main/java/core/src/main/java/com/lancedb/lance/JniLoader.java

posted on 2025-09-01 08:00  荣锋亮  阅读(24)  评论(0)    收藏  举报

导航