通常情况下,我们项目在通过Gitlab做CICD部署的时候,运维会统一让我们把需要部署的java编译后的jar包文件重命名并且拷贝到项目根目录下的deploy/app.jar
,然后就统一引用一个构建脚本,目前我们项目组gralde和maven项目都有,基本上都是通过插件实现拷贝重命名到指定位置,当然gradle直接写脚本就可以简单拷贝,下面给出一些配置参考,仅做备忘。
maven项目
pom.xml合适的位置引入,然后编译项目看是否成功。
代码语言:javascript复制<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<outputDirectory>../deploy</outputDirectory>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
回顾Maven的六类属性
- POM属性:定义在Maven项目POM文件中的属性,例如groupID、artifactID、version等。
- 系统属性:定义在操作系统中的属性,例如JAVA_HOME、M2_HOME等。
- 环境属性:定义在操作系统的环境变量中的属性,例如PATH、JAVA_HOME等。
- Maven属性:由Maven自动设置的属性,例如project.build.directory、project.basedir等。
- Java系统属性:通过 JVM 中-D参数传递的属性,例如java.home、user.home等。
- 命令行属性:通过命令行参数传递的属性,例如-DpropertyName=value。
常用属性如下:
- ${basedir}:项目的根目录(包含pom.xml文件的目录),
- ${version}:项目版本
- ${project.build.sourceDirectory}:项目的主源码目录,默认为 src/main/java
- ${project.build.testSourceDirectory}:项目的测试源码目录,默认为 src/test/java
- ${project.build.directory}:项目构件输出目录,默认为 target/
- ${project.outputDirectory}:项目主代码编译输出目录,默认为 target/classes/
- ${project.testOutputDirectory}:项目测试代码编译输出目录,默认为 target/test-classes/
- ${project.groupId}:项目的 groupId
- ${project.artifactId}:项目的 artifactId
Gradle项目
build.gradle合适的位置引入,然后斌阿姨项目看是否成功。
代码语言:javascript复制task copyAndRenameJarToDeploy(type: Copy) {
delete "${rootDir}/deploy/"
from("${buildDir}/libs/${project.name}-${version}.jar")
into("${rootDir}/deploy/")
rename("${project.name}-${version}.jar", "app.jar")
}
assemble.finalizedBy(copyAndRenameJarToDeploy)