maven插件配置

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xhs</groupId>
    <artifactId>iot</artifactId>
    <version>1.0.0.Standard.RELEASE</version>
    <packaging>pom</packaging>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <env>dev</env>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <iot.version>1.0.0.Standard.RELEASE</iot.version>
        <spring-boot.version>1.5.9.RELEASE</spring-boot.version>
        <spring-cloud.version>Edgware.RELEASE</spring-cloud.version>

        <!--Lombok-->
        <lombok.version>1.16.20</lombok.version>

        <jjwt.version>0.9.0</jjwt.version>
        <fastjson.version>1.2.46</fastjson.version>
        <hutool.version>3.3.2</hutool.version>
        <commons-io.version>2.6</commons-io.version>
        <jasypt.version>1.18</jasypt.version>
        <mybatis-plus.version>2.1.9</mybatis-plus.version>
        <mybatisplus-spring-boot-starter.version>1.0.5</mybatisplus-spring-boot-starter.version>
        <hibernate-validator.version>5.4.1.Final</hibernate-validator.version>
        <swagger2.version>2.8.0</swagger2.version>
        <fastdfs.version>0.2.0</fastdfs.version>
        <ttl.version>2.2.0</ttl.version>
        <sharding-jdbc-core-spring-boot-starter.version>2.0.1</sharding-jdbc-core-spring-boot-starter.version>
        <velocity-engine-core.version>2.0</velocity-engine-core.version>
        <qiniu.version>[7.2.0, 7.2.99]</qiniu.version>
        <kaptcha.version>0.0.9</kaptcha.version>
        <docker.maven.plugin.version>0.4.13</docker.maven.plugin.version>
        <docker.repostory>192.168.31.70:5000</docker.repostory>
        <docker.registry.name>iot</docker.registry.name>

        <spring-boot-admin-server.version>1.5.6</spring-boot-admin-server.version>
        <spring-boot-admin-server-ui.version>1.5.6</spring-boot-admin-server-ui.version>
        <spring-boot-admin-server-ui-turbine.version>1.5.6</spring-boot-admin-server-ui-turbine.version>

        <aliyun.oos.version>2.8.2</aliyun.oos.version>
    </properties>

    <!--公共依赖-->
    <dependencies>
        <!--注册中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <!--配置中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <!--监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--Lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
        <!--测试依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <modules>
        <module>iot-auth</module>
        <module>iot-config</module>
        <module>iot-common</module>
        <module>iot-eureka</module>
        <module>iot-gateway</module>
        <module>iot-modules</module>
        <module>iot-visual</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.spring.platform</groupId>
                <artifactId>platform-bom</artifactId>
                <version>Brussels-SR6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.aliyun.oss</groupId>
                <artifactId>aliyun-sdk-oss</artifactId>
                <version>${aliyun.oos.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <resources><!-- 使用@@站位符,输出Dockerfile至docker文件夹 -->
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/docker</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/Dockerfile</include>
                </includes>
                <targetPath>../docker</targetPath>
            </resource>
        </resources>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>build-info</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <target>${java.version}</target>
                        <source>${java.version}</source>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <version>2.2.4</version>

                    <configuration>
                        <failOnNoGitDirectory>false</failOnNoGitDirectory>
                        <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
                        <injectAllReactorProjects>true</injectAllReactorProjects>
                    </configuration>
                    <executions>
                        <execution>
                            <id>get-the-git-infos</id>
                            <goals>
                                <goal>revision</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>${docker.maven.plugin.version}</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>build</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>push-stander-image</id>
                            <phase>deploy</phase>
                            <goals>
                                <goal>push</goal>
                            </goals>
                            <configuration>
                                <imageName>${docker.repostory}/${docker.registry.name}/${env}/${project.artifactId}:${project.version}</imageName>
                            </configuration>
                        </execution>
                        <execution>
                            <id>push-git-tag-images</id>
                            <phase>deploy</phase>
                            <goals>
                                <goal>push</goal>
                            </goals>
                            <configuration>
                                <imageName>${docker.repostory}/${docker.registry.name}/${env}/${project.artifactId}:${git.commit.id.abbrev}</imageName>
                            </configuration>
                        </execution>

                        <execution>
                            <id>push-latest-image</id>
                            <phase>deploy</phase>
                            <goals>
                                <goal>push</goal>
                            </goals>
                            <configuration>
                                <imageName>${docker.repostory}/${docker.registry.name}/${env}/${project.artifactId}:latest</imageName>
                            </configuration>
                        </execution>
                    </executions>
                    <configuration>
                        <!-- 私有仓库配置,需要settings.xml文件配合serverId对应的服务地址 -->
                        <!--<serverId>docker-aliyun</serverId>-->
                        <registryUrl>${docker.repostory}</registryUrl>
                        <!--<forceTags>true</forceTags>-->
                        <!--install阶段也上传,否则只有deploy阶段上传-->
                        <pushImage>false</pushImage>
                        <dockerDirectory>${project.build.directory}/docker</dockerDirectory>
                        <imageName>
                            ${docker.repostory}/${docker.registry.name}/${env}/${project.artifactId}:${project.version}
                        </imageName>
                        <imageTags>
                            <!--docker的tag为项目版本号、latest-->
                            <imageTag>${git.commit.id.abbrev}</imageTag>
                            <imageTag>latest</imageTag>
                        </imageTags>
                        <resources>
                            <rescource><!-- 将打包文件放入dockerDirectory指定的位置 -->
                                <targetPath>/</targetPath>
                                <directory>${project.build.directory}</directory>
                                <!--<include>${project.build.finalName}.jar</include>-->
                                <include>${project.artifactId}.jar</include>
                                <include>**/*.etc</include>
                            </rescource>
                        </resources>
                    </configuration>
                </plugin>

            </plugins>
        </pluginManagement>
    </build>


    <!--<repositories>-->
        <!--<repository>-->
            <!--<id>xhs</id>-->
            <!--<name>xhs Nexus</name>-->
            <!--<url>http://192.168.31.60:8081/nexus/content/groups/public/</url>-->
        <!--</repository>-->
    <!--</repositories>-->

    <distributionManagement>
        <repository>
            <id>releases</id>
            <name>Nexus Release Repository</name>
            <url>http://192.168.31.60:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://192.168.31.60:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
</project>

子pom文件

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.xhs.iot</groupId>
	<artifactId>iot-auth</artifactId>
	<version>1.0.0.Standard.RELEASE</version>
	<packaging>jar</packaging>

	<name>iot-auth</name>
	<description>jwt 认证服务</description>

	<parent>
		<groupId>com.xhs</groupId>
		<artifactId>iot</artifactId>
		<version>1.0.0.Standard.RELEASE</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>com.xhs.iot</groupId>
			<artifactId>iot-common</artifactId>
			<version>${iot.version}</version>
		</dependency>
		<!--oauth2.0-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-oauth2</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-feign</artifactId>
		</dependency>
		<!--freemarker-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-freemarker</artifactId>
		</dependency>

		<!--MySQL-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

		<!--HikariCP连接池-->
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<finalName>${project.name}</finalName>
				</configuration>
			</plugin>
			<plugin>
				<groupId>pl.project13.maven</groupId>
				<artifactId>git-commit-id-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
			</plugin>

		</plugins>
	</build>

</project>

 

 

Dockerfile定义

# Version 0.0.1
FROM 192.168.31.70:5000/iot/test/java

MAINTAINER CaoBin "346322003@qq.com"

#RUN
RUN sed  -i 's/DEBUG/INFO/g' `find /app/pinpoint-agent -name log4j.xml`

# 环境变量
ENV JAVA_OPTS="\
-server \
-Xmx800m \
-Xms800m \
-Xss256k \
-XX:-UseGCOverheadLimit \
-XX:SurvivorRatio=8 \
-XX:MetaspaceSize=256m \
-XX:MaxMetaspaceSize=512m \
-XX:+UseParallelGC \
-XX:ParallelGCThreads=4 \
-XX:+UseParallelOldGC \
-XX:+UseAdaptiveSizePolicy \
-XX:+PrintGCDetails \
-XX:+PrintTenuringDistribution \
-XX:+PrintGCTimeStamps \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/app/logs/jvm \
-Xloggc:/app/logs/jvm/gc.log \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=5 \
-XX:GCLogFileSize=10M "

ENV WORK_PATH /app
ENV APP_NAME @project.artifactId@.@project.packaging@
ENV APP_VERSION @project.version@
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#EXPOSE 8080

#USER
#USER user:group

#VOLUME
VOLUME ["/app", "/tmp/app"]

#ADD

#COPY
COPY $APP_NAME $WORK_PATH/

#LABEL
#STOPSIGNAL
#ARG
#ONBUILD

# WORKDIR
WORKDIR $WORK_PATH

# ENTRYPOINT
#ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=@env@","-javaagent:/app/pinpoint-agent/pinpoint-bootstrap-1.6.1.jar", "-Dpinpoint.agentId=@project.artifactId@", "-Dpinpoint.applicationName=@project.artifactId@"]
# CMD
#CMD ["-jar", "@project.artifactId@.@project.packaging@"]

#ENTRYPOINT java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=@env@ -javaagent:/app/pinpoint-agent/pinpoint-bootstrap-1.6.1.jar -Dpinpoint.agentId=@project.artifactId@ -Dpinpoint.applicationName=@project.artifactId@ -jar @project.artifactId@.@project.packaging@
ENTRYPOINT java $JAVA_OPTS  -XX:OnOutOfMemoryError='kill -9 %p' -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=@env@ -jar @project.artifactId@.@project.packaging@