Maven的使用

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}&amp;&amp;<![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}&amp;&amp;<![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)
posted @ 2022-03-11 10:06  南有乔木不可修思  阅读(83)  评论(0)    收藏  举报