maven and RPM

本文介绍Maven作为项目管理工具的应用,并详细讲解了如何使用RPM进行软件包的安装、卸载及查看已安装的软件包。此外,还介绍了如何在Maven的pom.xml中指定RPM spec文件的内容。

1. maven

 

项目管理工具,参考 http://www.ibm.com/developerworks/cn/java/j-maven/

 

2. RPM

 

删除: rpm -e

安装: rpm -i

查看: rpm -qa

 

spec文件:

参考 http://www.ibm.com/developerworks/cn/java/j-maven/

 

可以在maven的pom.xml指定产生的RPM的spec文件内容, 例如:

 

 

产生的spec文件如下:

 

 

[root@yfw ~]# cd /opt/openfire [root@yfw openfire]# rpm -q javapackages-tools package javapackages-tools is not installed [root@yfw openfire]# cd /tmp [root@yfw tmp]# wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz --2025-10-01 20:49:13-- https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz Resolving archive.apache.org (archive.apache.org)... 65.108.204.189 Connecting to archive.apache.org (archive.apache.org)|65.108.204.189|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 8676320 (8.3M) [application/x-gzip] Saving to: 'apache-maven-3.8.6-bin.tar.gz' apache-maven-3.8.6-bin.tar 100%[======================================>] 8.27M 304KB/s in 27s 2025-10-01 20:49:42 (309 KB/s) - 'apache-maven-3.8.6-bin.tar.gz' saved [8676320/8676320] [root@yfw tmp]# curl -k -O https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 8472k 100 8472k 0 0 163k 0 0:00:51 0:00:51 --:--:-- 190k [root@yfw tmp]# sudo tar -xzf apache-maven-3.8.6-bin.tar.gz -C /opt/ [root@yfw tmp]# sudo ln -s /opt/apache-maven-3.8.6 /opt/maven [root@yfw tmp]# export PATH=/opt/maven/bin:$PATH [root@yfw tmp]# echo 'export PATH=/opt/maven/bin:$PATH' >> ~/.bash_profile -bash: /root/.bash_profile: Operation not permitted [root@yfw tmp]# source ~/.bash_profile manpath: can't set the locale; make sure $LC_* and $LANG are correct [root@yfw tmp]# mvn -v -bash: mvn: command not found [root@yfw tmp]#
最新发布
10-02
你已经完成了大部分关键步骤,但在最后遇到了两个问题: ```bash echo 'export PATH=/opt/maven/bin:$PATH' >> ~/.bash_profile -bash: /root/.bash_profile: Operation not permitted ``` 和 ```bash mvn -v -bash: mvn: command not found ``` --- ## 🔍 问题分析 1. **`Operation not permitted` 写入 `.bash_profile`** → 表明你的 `~/.bash_profile` 文件或其所在目录权限被锁定(常见于容器、只读文件系统、安全策略限制)。 2. **`mvn -v` 找不到命令** → 虽然你执行了: ```bash export PATH=/opt/maven/bin:$PATH ``` 但可能由于 shell 环境未正确继承,或者你在新的 shell 中运行命令时该 `export` 已失效。 --- ## ✅ 解决方案:绕过写文件限制,确保 `mvn` 可用 ### ✅ 方法一:手动设置 PATH 并验证(每次登录都需重新执行) ```bash export PATH=/opt/maven/bin:$PATH mvn -v ``` ✅ 如果输出 Maven 版本信息,则说明 **Maven 安装成功,只是环境变量没持久化**。 > 💡 这个 `export` 只对当前终端会话有效。关闭后就失效。 --- ### ✅ 方法二:尝试其他配置文件(替代 `.bash_profile`) 有些系统使用 `.profile` 或 `.bashrc` 加载环境变量。 #### 尝试写入 `.bashrc`: ```bash echo 'export PATH=/opt/maven/bin:$PATH' >> ~/.bashrc source ~/.bashrc ``` 然后测试: ```bash mvn -v ``` ✅ 成功?说明 `.bashrc` 是可用的启动文件。 --- #### 尝试写入 `.profile`: ```bash echo 'export PATH=/opt/maven/bin:$PATH' >> ~/.profile source ~/.profile ``` 再试: ```bash mvn -v ``` --- ### ✅ 方法三:如果所有文件都无法写入 —— 每次手动加载 创建一个别名脚本或快捷方式: ```bash alias maven='export PATH=/opt/maven/bin:$PATH' maven mvn -v ``` 或将它加入你自己的工具脚本中: ```bash cat > ~/setup-env.sh << 'EOF' export PATH=/opt/maven/bin:$PATH export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk EOF source ~/setup-env.sh mvn -v ``` 📌 只要能运行一次 `source ~/setup-env.sh`,就能临时启用 Maven--- ### ✅ 方法四:直接使用完整路径调用 `mvn` 即使没有设置 PATH,也可以这样运行: ```bash /opt/maven/bin/mvn -v ``` 这可以绕过任何 PATH 设置问题! > 🚀 极端情况下,修改 `install-sdk.sh` 脚本中的 `mvn` 调用为 `/opt/maven/bin/mvn`,但其实这个脚本只做检查,并不真正执行 `mvn` 命令。 --- ## ✅ 验证你现在是否可以运行 `install-sdk.sh` ```bash # 先确保 PATH 正确 export PATH=/opt/maven/bin:$PATH # 进入目录并运行 cd /opt/openfire ./install-sdk.sh 4.9.2 ``` 你应该看到: ``` Installing Openfire SDK version 4.9.2... Downloading Openfire distribution package... [INFO] SDK installed successfully at /root/.m2/repository/org/igniterealtime/openfire/openfire/4.9.2 ``` > ⚠️ 注意:`install-sdk.sh` 只检查 `mvn` 是否在 PATH 中(通过 `command -v mvn`),所以必须让 `mvn` 可访问。 --- ## ✅ 检查 SDK 是否安装成功 ```bash ls ~/.m2/repository/org/igniterealtime/openfire/openfire/4.9.2/ ``` 输出应包含: ``` openfire-4.9.2.jar openfire-4.9.2.pom openfire-4.9.2-sources.jar ``` --- ## ✅ 构建 REST API 插件(使用全路径 `mvn`) ```bash cd ~/openfire-plugins/openfire-restAPI-plugin /opt/maven/bin/mvn clean package -DskipTests ``` 或者先设置 PATH: ```bash export PATH=/opt/maven/bin:$PATH mvn clean package -DskipTests ``` 构建成功后: ```bash ls target/restAPI-*.jar ``` 输出: ``` target/restAPI-1.8.0.jar ``` --- ## ✅ 部署插件 ```bash cp target/restAPI-1.8.0.jar /opt/openfire/plugins/restapi.jar chown openfire:openfire /opt/openfire/plugins/restapi.jar systemctl restart openfire ``` --- ## ✅ 查看日志确认插件启动 ```bash tail -f /opt/openfire/logs/all.log | grep -i "restapi" ``` 期待: ``` INFO [org.jivesoftware.openfire.plugin.rest.RESTServicePlugin] Starting REST API Plugin v1.8.0 INFO [org.jivesoftware.openfire.plugin.rest.RESTServicePlugin] Started REST API Plugin ``` --- ## 💡 总结:你现在处于“受限环境” | 现象 | 含义 | |------|------| | `Operation not permitted` 写文件 | 很可能是容器、只读文件系统、SELinux/AppArmor 限制 | | `mvn -v` 找不到 | PATH 未正确设置或 shell 不加载配置文件 | ✅ **应对策略**: - 使用 `export PATH=/opt/maven/bin:$PATH` 每次手动加载 - 使用 `~/setup-env.sh` 脚本快速初始化环境 - 直接使用 `/opt/maven/bin/mvn` 全路径调用 - 不依赖 `.bash_profile`,改用 `.bashrc` 或自定义脚本 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值