龙架构Maven仓库使用介绍
本文介绍龙架构Maven仓库的使用方法,并以jffi为例进行演示。
1. 龙架构Maven仓库URL
龙架构Maven仓库的地址为:https://maven.loongnix.cn/loongarchabi1/maven
2. 使用方法
用户可以通过以下任一方法使用龙架构Maven仓库。
- 为项目配置
- 为用户配置
- 为Maven软件配置
2.1. 为项目配置
第一种方法是为指定项目配置龙架构Maven仓库,在项目的pom.xml
文件中添加如下代码:
<project>
...
<repositories>
<repository>
<id>loongson</id>
<name>Loongson Maven</name>
<url>https://maven.loongnix.cn/loongarchabi1/maven/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>loongson</id>
<name>Loongson Maven</name>
<url>https://maven.loongnix.cn/loongarchabi1/maven/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
...
</project>
其中,<id>
和<name>
标签中的内容可以自定义,<url>
的内容为龙架构Maven仓库的URL。
如果需要配置其他仓库,应当将龙架构Maven仓库置于首位,比如:
<project>
...
<repositories>
<repository>
<id>loongson</id>
<name>Loongson Maven</name>
<url>https://maven.loongnix.cn/loongarchabi1/maven/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>sample-repo</id>
<name>Sample-repo</name>
<url>https://sample.repo.url</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>loongson</id>
<name>Loongson Maven</name>
<url>https://maven.loongnix.cn/loongarchabi1/maven/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
<pluginRepository>
<id>sample-repo</id>
<name>Sample-repo</name>
<url>https://sample.repo.url</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
...
</project>
需要注意的是,Maven 3.5.0之后的版本默认不再支持使用http协议的仓库,可以根据需要屏蔽文件~/.m2/settings.xml
或$MAVEN_HOME/conf/settings.xml
中的下述代码:
...
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
...
2.2. 为用户配置
第二种方法是为Linux用户配置龙架构Maven仓库,参考如下代码修改~/.m2/settings.xml
。如果没有该文件,可以将$MAVEN_HOME/conf/settings.xml
复制到~/.m2
下:
...
<profiles>
<profile>
<id>my-profile</id>
<repositories>
<repository>
<id>loongson</id>
<name>Loongson Maven</name>
<url>https://maven.loongnix.cn/loongarchabi1/maven/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>loongson</id>
<name>Loongson Maven</name>
<url>https://maven.loongnix.cn/loongarchabi1/maven/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>my-profile</activeProfile>
</activeProfiles>
...
有配置其他仓库的需求可以参考为项目配置小节中的代码,此处不再赘述。
2.3. 为Maven软件配置
参考为用户配置小节中的代码修改$MAVEN_HOME/conf/settings.xml
文件即可。
3. 验证方法
本小节介绍如何验证是否成功配置了龙架构Maven仓库。
新建文件夹test
,并在test
下新建pom.xml
。
$ mkdir test
$ cd test
$ vim pom.xml
将下面的代码添加到pom.xml文件中。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>os-maven-plugin-test</artifactId>
<version>1.0.0</version>
<build>
<plugins>
<plugin>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.6.2</version>
<executions>
<execution>
<id>check-arch</id>
<phase>initialize</phase>
<goals>
<goal>detect</goal>
</goals>
<configuration>
<failOnUnknownArch>true</failOnUnknownArch>
<arch>loongarch64</arch>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
保存并退出,随后执行下列命令清空本地Maven仓库缓存,并构建项目:
$ rm -rf ~/.m2/repository/
$ mvn clean verify
如果执行结果为SUCCESSFUL,如下代码所示,则说明已经成功配置了龙架构Maven仓库;
[INFO] Building jar: /home/user/Work/test/hello-loongson-maven/target/os-maven-plugin-test-1.0.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.072 s
[INFO] Finished at: 2023-06-26T19:01:37+08:00
[INFO] ------------------------------------------------------------------------
如果执行上述命令报错,且报错中包含如下信息,则说明当前Maven不能从龙架构Maven仓库中获取构件,请检查配置是否存在问题。
[ERROR] Failed to execute goal kr.motd.maven:os-maven-plugin:1.6.2:detect (check-arch) on project os-maven-plugin-test: unknown os.arch: loongarch64 -> [Help 1]
4. 一个构建实例
接下来以jffi为例,介绍如何在LoongArch平台使用Maven构建项目。
4.1. 安装Java环境
从龙芯开源社区下载并安装Java环境
将下载的压缩包安装至指定目录,例如
/home/user/software/jdk-17.0.7
$ mv loongson17.5.0-fx-jdk17.0.7_7-linux-loongarch64.tar.gz /home/user/software $ tar -zxf loongson17.5.0-fx-jdk17.0.7_7-linux-loongarch64.tar.gz
修改环境变量,验证是否安装成功
使用如下命令编辑环境变量:
$ vim ~/.bashrc
在环境变量中添加如下代码:
JAVA_HOME=/home/user/software/jdk-17.0.7 PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH
保存并退出,依次执行下列命令,检查Java环境是否安装成功。
$ source ~/.bashrc $ java -version openjdk version "17.0.7" 2023-04-18 OpenJDK Runtime Environment Loongson17.5.0 (build 17.0.7+7) OpenJDK 64-Bit Server VM Loongson17.5.0 (build 17.0.7+7, mixed mode, sharing)
4.2. 安装并配置Maven
从Maven官网下载需要的Maven
将下载的压缩包解压到安装路径,例如/home/user/software/
$ mv apache-maven-3.9.2-bin.tar.gz /home/user/software $ tar -zxf apache-maven-3.9.2-bin.tar.gz
修改环境变量,验证是否安装成功
使用如下命令编辑环境变量:
$ vim ~/.bashrc
在环境变量中添加如下代码:
MVN_HOME=/home/user/software/apache-maven-3.9.2 export PATH=$MVN_HOME/bin:$PATH
保存并退出,依次执行下列命令检查是否安装成功:
$ source ~/.bashrc $ mvn -v Apache Maven 3.9.2 (c9616018c7a021c1c39be70fb2843d6f5f9b8a1c) Maven home: /home/user/software/apache-maven-3.9.2 Java version: 17, vendor: LoongsonJVM, runtime: /home/user/software/jdk/17 Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "4.19.0-18-loongson-3", arch: "loongarch64", family: "unix"
参考本章提供的方法配置龙芯Maven源
以为Maven软件配置为例,首先编辑
settings.xml
。$ vim $MVN_HOME/conf/settings.xml
添加如下代码:
<profiles> <profile> <id>my-profile</id> <repositories> <repository> <id>loongson</id> <name>Loongson Maven</name> <url>https://maven.loongnix.cn/loongarchabi1/maven/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>loongson</id> <name>Loongson Maven</name> <url>https://maven.loongnix.cn/loongarchabi1/maven/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>my-profile</activeProfile> </activeProfiles>
4.3. 构建jffi
获取jffi的源码
使用
git
命令获取jffi源码,并切换至某一版本,如jffi-1.3.10
:git clone https://github.com/jnr/jffi.git git checkout jffi-1.3.10
使用Maven构建jffi
$ mvn clean verify
执行上述命令后,如果有类似如下的屏幕输出,说明构建成功。
[INFO] Building jar: /home/user/Work/maven-project/jffi/target/jffi-1.3.10-complete.jar [INFO] [INFO] --- assembly:2.2:single (native-assembly) @ jffi --- [INFO] Reading assembly descriptor: src/main/assembly/native.xml [INFO] Building jar: /home/user/Work/maven-project/jffi/target/jffi-1.3.10-native.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 40.936 s [INFO] Finished at: 2023-06-26T19:44:49+08:00 [INFO] ------------------------------------------------------------------------