通常情况下,我们项目在通过Gitlab做CICD部署的时候,运维会统一让我们把需要部署的java编译后的jar包文件重命名并且拷贝到项目根目录下的deploy/app.jar,然后就统一引用一个构建脚本,目前我们项目组gralde和maven项目都有,基本上都是通过插件实现拷贝重命名到指定位置,当然gradle直接写脚本就可以简单拷贝,下面给出一些配置参考,仅做备忘。

maven项目

pom.xml合适的位置引入,然后编译项目看是否成功。

<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的六类属性

  1. POM属性:定义在Maven项目POM文件中的属性,例如groupID、artifactID、version等。
  2. 系统属性:定义在操作系统中的属性,例如JAVA_HOME、M2_HOME等。
  3. 环境属性:定义在操作系统的环境变量中的属性,例如PATH、JAVA_HOME等。
  4. Maven属性:由Maven自动设置的属性,例如project.build.directory、project.basedir等。
  5. Java系统属性:通过 JVM 中-D参数传递的属性,例如java.home、user.home等。
  6. 命令行属性:通过命令行参数传递的属性,例如-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合适的位置引入,然后斌阿姨项目看是否成功。

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)
文章目录