1.执行maven 命令:clean package sonar:sonar 即可上传镜像并将测试报告上传到sonar
2. 如果没有配置环境变量:SONAR_URL ,则执行命令:
clean package sonar:sonar -D sonar.host.url=http://10.102.129.22:9000
1. pom.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.8.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.excep.demo</groupId><artifactId>project-name</artifactId><version>1.0.0-SNAPSHOT</version><name>project-name</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><lombok.version>1.18.8</lombok.version><docker.image.prefix>prime</docker.image.prefix><version.powermock>2.0.0</version.powermock><git.version></git.version><git.branch></git.branch><timestamp>${maven.build.timestamp}</timestamp><maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss.SSSXXX</maven.build.timestamp.format><sonar.tests>src/test/groovy,src/test/java</sonar.tests><sonar.exclusions>**/baseconfig/**,**/enums/**,**/constants/**,**/model/**,**/dao/**</sonar.exclusions></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-bean-validators</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.10.5</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.10.5</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><version>0.10.5</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.1-jre</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>2.4.15</version><scope>test</scope></dependency><dependency><groupId>org.spockframework</groupId><artifactId>spock-core</artifactId><version>1.2-groovy-2.4</version><scope>test</scope></dependency><dependency><groupId>net.bytebuddy</groupId><artifactId>byte-buddy</artifactId><version>1.8.21</version><scope>test</scope></dependency><dependency><groupId>org.objenesis</groupId><artifactId>objenesis</artifactId><version>2.6</version><scope>test</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.58</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.8</version></dependency><dependency><groupId>javax.jms</groupId><artifactId>javax.jms-api</artifactId><version>2.0.1</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.10</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-typehandlers-jsr310</artifactId><version>1.0.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><scope>provided</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>5.1.10.RELEASE</version></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client</artifactId><version>5.15.11</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId><version>2.1.3.RELEASE</version></dependency></dependencies><build><plugins><plugin><!-- 这个文件必须在dockerfile 文件之前,因为pom是顺序扫描,如果放在之后,会导致镜像启动时,提示找不到启动类 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.1.8.RELEASE</version><configuration><mainClass>com.primerobotics.primemanagementconsole.PrimeManagementConsoleApplication</mainClass><layout>JAR</layout><fork>true</fork><addResources>true</addResources></configuration></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.21.0</version><configuration><useFile>false</useFile><!-- maven 的 test 命令默认扫描命名规范以Test结尾的测试类,为了支持Spock 测试框架,必须添加 **/*Spec.java ,注意是*.java文件--><includes><include>**/*Test.java</include><include>**/*Spec.java</include></includes></configuration></plugin><!-- Docker maven plugin --><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.4.6</version><executions><execution><id>default</id><goals><goal>build</goal><goal>push</goal></goals></execution></executions><configuration><repository>${docker.image.prefix}/${project.name}</repository><tag>${project.version}</tag><buildArgs><JAR_FILE>${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration></plugin><!-- sonar --><!-- Mandatory plugins for using Spock --><plugin><!-- The gmavenplus plugin is used to compile Groovy code. To learn more about this plugin,visit https://github.com/groovy/GMavenPlus/wiki --><groupId>org.codehaus.gmavenplus</groupId><artifactId>gmavenplus-plugin</artifactId><version>1.4</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions></plugin><!-- Jacoco--><plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.8.5</version><executions><execution><goals><goal>prepare-agent</goal></goals><configuration><destFile>${project.build.directory}/jacoco.exec</destFile></configuration></execution><execution><id>report</id><phase>prepare-package</phase><goals><goal>report</goal></goals></execution></executions></plugin></plugins><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources></build>
<profiles><profile><id>sonar</id><activation><activeByDefault>true</activeByDefault></activation><properties><sonar.host.url>${env.SONAR_URL}</sonar.host.url><sonar.sources>src/main/java</sonar.sources><sonar.tests>src/test/java</sonar.tests><sonar.java.binaries>target</sonar.java.binaries><sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin><sonar.jacoco.reportPaths>target/coverage-reports/jacoco.exec</sonar.jacoco.reportPaths><sonar.sourceEncoding>UTF-8</sonar.sourceEncoding><sonar.exclusions>**/baseconfig/**,**/enums/**,**/constants/**,**/model/**,**/dao/**</sonar.exclusions></properties></profile></profiles>
</project>
2. dockfile 文件内容:
- 文件名:Dockerfile
- 位于根目录下
- 配置环境变量:
DOCKER_HOST : tcp://ip:port - 只需要运行maven 的package就可以打包镜像,上传到指定的docker仓库
FROM openjdk:8-jre# Add the service itself
ARG JAR_FILEADD target/${JAR_FILE} /config/project-name.jar
WORKDIR /configEXPOSE 8283ENTRYPOINT ["java", "-jar", "project-name.jar"]