杭州企业网站优化,开网站建设公司赚钱吗,百竞(湘潭)网站建设,大理网站建设公司常用的Maven命令如下
命令 说明mvn clean 清理Maven 项目。会删除目标路径(一般是target目录)Maven生成的打包文件,编译文件。mvn package 打包Maven项目,会生成jar 或者war文件。mvn test 执行test目录下的测试用例。mvn deploy 发布依赖到远端mvn site 生成…常用的Maven命令如下
命令 说明mvn clean 清理Maven 项目。会删除目标路径(一般是target目录)Maven生成的打包文件,编译文件。mvn package 打包Maven项目,会生成jar 或者war文件。mvn test 执行test目录下的测试用例。mvn deploy 发布依赖到远端mvn site 生成项目相关的信息mvn archetype创建Maven 项目mvn tomcat:run 运行在Tomcat容器mvn install 安装依赖
jar包
打包到本地 mvn clean install -Dmaven.test.skiptrue 打包到远程仓库 mvn clean deplay -Dmaven.test.skiptrue 说明
clean: 是清除之前的jar包
install是打包到本地
deploy是打包到远程仓库
-Dmaven.test.skiptrue 是忽略测试代码
war包 mvn clean package -Dmaven.test.skiptrue maven的spring boot 打包分离依赖及配置文件
!--省略 其他配置 --!--参数配置--propertiespackage.output.basedir${project.build.directory}/${project.artifactId}-${project.version}/package.output.basediroutput.dependence.file.pathlib//output.dependence.file.pathoutput.resource.file.pathconfig//output.resource.file.pathoutput.shell.file.pathbin//output.shell.file.path/properties!--打包配置配置--build!-- 打包名称 如果需要包含时间戳需要加入时间戳插件 --finalName${project.artifactId}-${project.version}/finalName!--打包加GMT8时间插件(默认是UTC时间少8小时)--pluginsplugingroupIdorg.codehaus.mojo/groupIdartifactIdbuildnumber-maven-plugin/artifactIdversion1.4/versionconfigurationtimestampFormatyyyyMMddHHmmss/timestampFormat/configurationexecutionsexecutiongoalsgoalcreate-timestamp/goal/goals/execution/executionsinheritedfalse/inherited/plugin!--移除配置文件将其不打包进jar包中并可以将打包后的jar包输出到指定路径 --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdconfiguration!-- 剔除配置文件或目录:注意从编译结果目录开始算目录结构excludes\includes 是根据编译后的classes这个路径计算的--excludes!-- 剔除指定后缀配置文件 --exclude*.properties/excludeexclude*.yml/exclude!-- 剔除指定目录 --!-- exclude/static/**/exclude--/excludesarchivemanifestaddClasspathtrue/addClasspath!-- MANIFEST.MF 中 Class-Path 各个依赖加入前缀 --!--lib文件夹内容需要 maven-dependency-plugin插件补充 (依赖包剥离位置)--classpathPrefix${output.dependence.file.path}/classpathPrefix!-- jar包不包含唯一版本标识 --useUniqueVersionsfalse/useUniqueVersions!--指定入口类 --mainClasscom.zhong.pacakge.springpacakage.PackageSpringPlugsApplication/mainClass/manifestmanifestEntries!--MANIFEST.MF 中 Class-Path 加入自定义路径多个路径用空格隔开 --!--此处config文件夹的内容需要maven-resources-plugin插件补充上 (配置文件剥离位置)--Class-Path./${output.resource.file.path}/Class-Path/manifestEntries/archive!--输出目录 不指定则输出到target下--outputDirectory${package.output.basedir}//${output.dependence.file.path}/outputDirectory/configuration/plugin!-- 将依赖包导出到指定文件夹 --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-dependency-plugin/artifactIdexecutionsexecutionidcopy-dependencies/idphasepackage/phasegoalsgoalcopy-dependencies/goal/goalsconfiguration!--依赖包的输出路径--outputDirectory${package.output.basedir}/${output.dependence.file.path}/outputDirectory/configuration/execution/executions/plugin!-- 将需要复制的文件复制到指定路径例将配置文件提取到指定路径 --pluginartifactIdmaven-resources-plugin/artifactIdexecutions!-- 复制配置文件 --executionidresources/idphasepackage/phasegoalsgoalcopy-resources/goal/goalsconfiguration!-- 复制哪些目录下的哪些文件到指定目录 --resourcesresourcedirectorysrc/main/resources/directory!-- 不配置excludes\includes默认就是复制指定目录的所有文件 --includesinclude*.properties/includeinclude*.yml/includeinclude*/*.properties/include/includes/resource/resourcesoutputDirectory${package.output.basedir}/${output.resource.file.path}/outputDirectory/configuration/execution!-- 启动类文件 位置--executionidshell/idphasepackage/phasegoalsgoalresources/goal/goalsconfiguration!-- 复制哪些目录下的哪些文件到指定目录 --resourcesresourcedirectorysrc/bin/directory!-- 不配置excludes\includes默认就是复制指定目录的所有文件 --includesinclude*.sh/includeinclude*.bat/include/includes/resource/resourcesoutputDirectory${package.output.basedir}/${output.shell.file.path}/outputDirectory/configuration/execution/executions/plugin!-- spring-boot-maven-plugin可以不使用可当做一般jar包来运行可统一包内文件结构- --!--plugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationlt;!ndash;重写包含依赖包含不存在的依赖jar里没有pom里的依赖 ndash;gt;includesincludegroupIdnon-exists/groupIdartifactIdnon-exists/artifactId/include/includesoutputDirectory${package.output.basedir}//${output.dependence.file.path}/outputDirectory/configurationexecutionsexecutiongoalsgoalrepackage/goal/goalsconfigurationlt;!ndash;配置jar包特殊标识 配置后保留原文件生成新文件 *-run.jar ndash;gt;lt;!ndash;配置jar包特殊标识 不配置原文件命名为 *.jar.original生成新文件 *.jar ndash;gt;lt;!ndash;classifierrun/classifier ndash;gt;/configuration/execution/executions/plugin--!--maven打包时跳过测试--plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdconfigurationskiptrue/skip/configuration/plugin!-- 指定多个源代码目录、多个资源文件目录 --plugingroupIdorg.codehaus.mojo/groupIdartifactIdbuild-helper-maven-plugin/artifactIdversion1.8/versionexecutionsexecutionidadd-source/idphasegenerate-sources/phasegoalsgoaladd-source/goal/goalsconfigurationsourcessourcesrc/main/java/sourcesourcesrc/main/library/source/sources/configuration/execution/executions/plugin!-- 编译插件 --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdconfigurationsource1.8/sourcetarget1.8/target/configuration/plugin/plugins/build
结果如下 maven-assembly-plugin进行配置分离打包
assembly.xml配置参考官网
Apache Maven Assembly Plugin – Assembly assembly.xml配置文件示例
?xml version1.0 encodingUTF-8?
assembly!-- 可自定义这里指定的是项目环境 --!-- xxx.tar.gz --idassembly/id!-- 打包的类型如果有N个将会打N个类型的包 --formatsformattar.gz/formatformatzip/format/formats!--压缩包是否包含 基于项目 基本目录的存档--includeBaseDirectorytrue/includeBaseDirectory!--文件设置,参考https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html --fileSets!-- 配置文件打包-打包至config目录下 fileSet 可以多个--fileSet!--目标目录,会处理目录里面的所有文件--directory${project.basedir}/src/main/resources//directory!--打包后的目标文件夹--outputDirectoryconfig/outputDirectory!--指定打包的文件--includesinclude*.xml/includeinclude*.properties/includeincludecommon/*.properties/include/includes!--排除的文件按--!-- excludesexclude/exclude/excludes--!--目录权限用户具有读/写/执行权限--directoryMode0755/directoryMode!--文件权限用户具有读/写/执行权限--fileMode0755/fileMode!--脚本文件的编码问题在这里要改为unix.如果是在windows上面编码会出现dos编写问题--lineEndingunix/lineEnding/fileSet!--项目自己创建并依赖的jar--!-- fileSetdirectory../package-common/target/directoryoutputDirectoryjar/outputDirectoryincludesinclude*.jar/include/includes/fileSet--!-- 启动文件目录 --fileSetdirectory${basedir}/src/bin/directoryoutputDirectorybin/outputDirectoryfileMode0755/fileModeincludesinclude**.sh/includeinclude**.bat/include/includes/fileSet/fileSetsfiles!--包含打包后的jar文件可以不加入dependencySet指定的 outputDirectory/,默认打包的目录--filesource${project.build.directory}/${project.build.finalName}.jar/source/file!--这种方式也可以进行文件处理但是针对单文件--!-- filesource${project.basedir}/src/main/resources/script/start.sh/sourcefileMode0755/fileModelineEndingunix/lineEnding/file--/filesdependencySetsdependencySet!--是否把本项目添加到依赖文件夹下:--useProjectArtifactfalse/useProjectArtifact!-- 将项目所有依赖包拷贝到发布包的lib目录下 --outputDirectorylib/outputDirectory!-- 符合runtime作用范围的依赖会被打包进去 --scoperuntime/scope!-- 这个是为了解决lib下同一个jar包可能有多个SNAPSHOT快照版的问题比如后面加了不同的时间戳--outputFileNameMapping${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}/outputFileNameMappingfileMode0755/fileModeexcludesexclude${project.groupId}:${project.artifactId}/exclude/excludes/dependencySet!--dependencySetlt;!ndash; 这个是为了解决lib下同一个jar包可能有多个SNAPSHOT快照版的问题比如后面加了不同的时间戳ndash;gt;outputFileNameMapping${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}/outputFileNameMappingoutputDirectoryboot/outputDirectoryfileMode0755/fileModeincludesinclude${project.groupId}:${project.artifactId}/include/includes/dependencySet--/dependencySets
/assembly 项目的pom.xml的build配置
build!-- 打包后的启动jar名称 --!-- finalName${project.groupId}/finalName--plugins!-- 用于排除jar中依赖包 --plugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationincludes!-- 项目启动jar包中排除依赖包 --includegroupIdnon-exists/groupIdartifactIdnon-exists/artifactId/include/includes/configuration/plugin!-- maven编译 --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdconfiguration!-- 不同版本需要制定具体的版本进行编译 --source${java.version}/sourcetarget${java.version}/target/configuration/plugin!-- 打包时跳过测试 --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion2.22.1/versionconfigurationskipTeststrue/skipTests/configuration/plugin!-- 打包插件 --pluginartifactIdmaven-assembly-plugin/artifactIdversion3.1.0/versionconfiguration!--文件夹名称 就是打包后里面的文件夹名称--finalName${project.build.finalName}/finalName!--指定压缩包的输出路径--outputDirectory${project.basedir}/target/package/outputDirectorydescriptors!--assembly.xml配置位置--descriptorsrc/main/resources/assembly/assembly.xml/descriptor/descriptors/configurationexecutionsexecutionidmake-assembly/id!-- 绑定到package生命周期阶段 --phasepackage/phasegoals!-- 只运行一次 --goalsingle/goal/goals/execution/executions/plugin/plugins/build
使用idea的install功能或者执行命令 mvn package assembly:single
结果如下 其他assembly.xml示例将所有jar打到lib中
?xml version1.0 encodingUTF-8?
assembly!-- 可自定义这里指定的是项目环境 --!-- xxx.tar.gz --idassembly/id!-- 打包的类型如果有N个将会打N个类型的包 --formatsformattar.gz/formatformatzip/format/formats!--压缩包是否包含 基于项目 基本目录的存档--includeBaseDirectorytrue/includeBaseDirectory!--文件设置,参考https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html --fileSets!-- 配置文件打包-打包至config目录下 fileSet 可以多个--fileSet!--目标目录,会处理目录里面的所有文件--directory${project.basedir}/src/main/resources//directory!--打包后的目标文件夹--outputDirectoryconfig/outputDirectory!--指定打包的文件--includesinclude*.xml/includeinclude*.properties/includeincludecommon/*.properties/include/includes!--排除的文件按--!-- excludesexclude/exclude/excludes--!--目录权限用户具有读/写/执行权限--directoryMode0755/directoryMode!--文件权限用户具有读/写/执行权限--fileMode0755/fileMode!--脚本文件的编码问题在这里要改为unix.如果是在windows上面编码会出现dos编写问题--lineEndingunix/lineEnding/fileSet!--项目自己创建并依赖的jar--!-- fileSetdirectory../package-common/target/directoryoutputDirectoryjar/outputDirectoryincludesinclude*.jar/include/includes/fileSet--!-- 启动文件目录 --fileSetdirectory${basedir}/src/bin/directoryoutputDirectorybin/outputDirectoryfileMode0777/fileModeincludesinclude**.sh/includeinclude**.bat/include/includes/fileSet/fileSetsfiles!--包含打包后的jar文件可以不加入dependencySet指定的 outputDirectory/,默认打包的目录--!--filesource${project.build.directory}/${project.build.finalName}.jar/source/file--!--这种方式也可以进行文件处理但是针对单文件--!-- filesource${project.basedir}/src/main/resources/script/start.sh/sourcefileMode0755/fileModelineEndingunix/lineEnding/file--/filesdependencySetsdependencySet!--是否把本项目添加到依赖文件夹下:--useProjectArtifacttrue/useProjectArtifact!-- 将项目所有依赖包拷贝到发布包的lib目录下 --outputDirectorylib/outputDirectory!-- 符合runtime作用范围的依赖会被打包进去 --scoperuntime/scope!-- 这个是为了解决lib下同一个jar包可能有多个SNAPSHOT快照版的问题比如后面加了不同的时间戳--outputFileNameMapping${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}/outputFileNameMappingfileMode0777/fileMode!--排除指定的文件,不放到lib文件夹--!--excludesexclude${project.groupId}:${project.artifactId}/exclude/excludes--/dependencySet!--dependencySetlt;!ndash; 这个是为了解决lib下同一个jar包可能有多个SNAPSHOT快照版的问题比如后面加了不同的时间戳ndash;gt;outputFileNameMapping${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}/outputFileNameMappingoutputDirectoryboot/outputDirectoryfileMode0755/fileModeincludesinclude${project.groupId}:${project.artifactId}/include/includes/dependencySet--/dependencySets
/assembly
结果如图 附上linux的执行脚本
#!/bin/bash
# you can run script sed -i s/\r$// start.sh to format the fileSERVER_NAMEpackage-assembly-demo#找到当前文件路径
cd dirname $0
#上册目录
cd ..
DEPLOY_DIRpwd
MAIN_CLASS_NANEPackageAssemblyApplication
MAIN_CLASS_PATHcom.zhong.pacakge.assemblydemo.PackageAssemblyApplication
LOGS_DIR${DEPLOY_DIR}/logs
STDOUT_LOG_FILE${LOGS_DIR}/stdout.log#日志文件路径
if [ ! -d ${LOGS_DIR} ]; thenmkdir ${LOGS_DIR}
fi
#日志文件权限
chmod -R 777 ${LOGS_DIR}PIDSps -ef | grep java | grep $MAIN_CLASS_NANE | awk {print $2}
if [ -n $PIDS ]; thenecho ERROR: The $SERVER_NAME already started!echo PID: $PIDSexit 1
fi#-agentlib:jdwptransportdt_socket,servery,suspendn,address10101
CLASS_PATH.:${DEPLOY_DIR}/config:${DEPLOY_DIR}/lib/*
JAVA_OPTS -server -Xmx1g -Xms1g -Xmn512m -Xss256k -XX:DisableExplicitGC -XX:UseConcMarkSweepGC -XX:CMSParallelRemarkEnabled -XX:LargePageSizeInBytes128m -XX:UseFastAccessorMethods -XX:UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction70 echo Starting the $SERVER_NAME ...nohup java ${JAVA_OPTS} -classpath ${CLASS_PATH} ${MAIN_CLASS_PATH} ${STDOUT_LOG_FILE} 21
sleep 5
if [ -n $PIDS ]; thenecho $SERVER_NAME started PID: $PIDSexit 1
fi