Maven打包jar包到本地仓库
# 正确
mvn install:install-file "-Dfile=.\piggy-settlement-sdk-1.6.jar" "-DgroupId=com.piggy" "-DartifactId=piggy-settlement-sdk" "-Dversion=1.6" "-Dpackaging=jar"
# 错误(未加引号,会提示少pom文件)
mvn install:install-file -Dfile=.\piggy-settlement-sdk-1.6.jar -DgroupId=com.piggy -DartifactId=piggy-settlement-sdk -Dversion=1.6 -Dpackaging=jar
Maven实现自动打包到linux并自动运行
// 参考 https://segmentfault.com/a/1190000009849487,https://www.jianshu.com/p/5c77cc19992d
// pom配置wagon
<properties>
// 账号密码建议放在maven的setting中
<remote-username>root</remote-username>
<remote-passwd>xxxxx</remote-passwd>
<remote-addr>192.168.x.x</remote-addr>
<service-path>/home/xxxx</service-path>
<pack-name>xxxx.jar</pack-name>
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.8</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<fromFile>target/${pack-name}</fromFile>
<url><![CDATA[scp://${remote-username}:${remote-passwd}@${remote-addr}${service-path}]]></url>
<commands>
<command>cd ${service-path}&&<![CDATA[sudo sh ${service-path}/profit_report.sh restart]]></command>
</commands>
<!-- 运行命令 mvn clean package wagon:upload-single wagon:sshexec-->
<displayCommandOutputs>true</displayCommandOutputs>
</configuration>
</plugin>
</plugins>
</build>
// profit_report.sh 是运行脚本
// 最后运行
mvn clean package wagon:upload-single wagon:sshexec
// 更加私密的配置
// settings.xml, idea要指定C:\Users\kun.wang\.m2\settings.xml为配置文件
<servers>
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
</servers>
// 使用方法
/**
配置属性说明:
属性 说明
serverId 之前在 settings.xml 中配置的服务器 ID。
fromFile 需要部署的包路径(相对路径)。
url linux 服务器的远程路径。
**/
<configuration>
<serverId>test_server</serverId>
<fromFile>target/xxx.war</fromFile>
<!--<url><![CDATA[scp://${remote-addr}${service-path}]]></url>-->
<url>scp://${ip 地址}/home/xxx/</url>
</configuration>
Maven自动打包部署实战
// 前提1. 配置远程密钥
// settings.xml, idea要指定C:\Users\kun.wang\.m2\settings.xml为配置文件
<servers>
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
</servers>
// 前提2. 配置文件
//maven.pom
<properties>
<!-- 远程服务地址-->
<remote-addr>121.36.139.126</remote-addr>
<!-- 远程服务目录-->
<service-path>/home/product_trace</service-path>
<!-- 生成的包名,与pom中配置一致-->
<pack-name>protrace.jar</pack -name>
<!-- 启动脚本文件名-->
<shell-name>product_trace.sh</shell-name>
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.8</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
<!-- 跳过单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<fromFile>target/${pack-name}</fromFile>
<serverId>deploy121</serverId>
<url><![CDATA[scp://${remote-addr}${service-path}]]></url>
<!-- <url><![CDATA[scp://${remote-username}:${remote-passwd}@${remote-addr}${service-path}]]></url>-->
<commands>
<!-- Restart jar package,write result into renren.log -->
<command>cd ${service-path}&&<![CDATA[sudo sh ${service-path}/profit_report.sh restart]]></command>
</commands>
<!-- 运行命令 mvn clean package wagon:upload-single wagon:sshexec-->
<displayCommandOutputs>true</displayCommandOutputs>
</configuration>
</plugin>
</plugins>
</build>
// 前提3. shell 脚本
#!/bin/bash
APP_NAME=protrace
BASE_DIR=$(pwd)/
case $1 in
start)
nohup java -jar -Xms256m -Xmx256m ${BASE_DIR}${APP_NAME}.jar --spring.profiles.active=linux-prod > ${BASE_DIR}logs/${APP_NAME}-`date "+%Y%m%d"`.log 2>&1 &
echo ${APP_NAME} start!
;;
stop)
ps -ef| grep ${APP_NAME} |grep -v grep |awk '{print $2}' | sed -e "s/^/kill -9 /g" | sh -
echo ${APP_NAME} stop!
;;
restart)
bash "$0" stop
sleep 3
bash "$0" start
;;
status)
ps -aux | grep ${APP_NAME} | grep -v 'grep'
;;
log)
case $2 in
nohup)
tail -f nohup.out
;;
*)
echo "Example:bash services.sh log nohup" ;;
esac
;;
*)
echo "Example:bash services.sh [start|stop|restart|status]" ;;
esac
// 最后
mvn clean package wagon:upload-single wagon:sshexec
Ali 国内maven镜像
maven{ url 'https://maven.aliyun.com/repository/central'}
maven{ url 'https://maven.aliyun.com/repository/public' }
maven{ url 'https://maven.aliyun.com/repository/google'}
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
maven{ url 'https://maven.aliyun.com/repository/spring'}
maven{ url 'https://maven.aliyun.com/repository/spring-plugin'}
maven{ url 'https://maven.aliyun.com/mvn/guide'}
maven{ url 'https://maven.aliyun.com/repository/apache-snapshots'}
Maven检查log4j漏洞
修复: springboot版本升级为2.5.8(2.6.2也可以),修复log4j漏洞
(mvn dependency:list | grep log4j 命令查看是否log4j版本是否为2.15.0)