maven skywalking


 mvaven -package 经历这么几个过程
maven-resources-plugin:3.1.0:resources
maven-compiler-plugin:3.8.1:compile 
maven-resources-plugin:3.1.0:testResources 
maven-compiler-plugin:3.8.1:testCompile
maven-surefire-plugin:2.22.2:test
maven-jar-plugin:3.1.2:jar 没有lib包 没有主类
spring-boot-maven-plugin:2.1.9.RELEASE:repackage 需要配置 上面都是默认的 

<?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>
    <parent>
<!--        也可以写自己定义的父pom统一规范 在父pom 可以用 <dependencyManagement>只声明版本 公共插件也可以写在父pom里-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <name>demo</name>
    <version>1.0-SNAPSHOT</version>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
        </dependency>

        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-jdk8</artifactId>
            <version>1.3.0.Final</version>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <finalName>${project.name}</finalName>
        <resources>
<!--            下同理不会打包xml文件-->
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
<!--            如果不写这个 他不会打包 该目录下的xml文件** 代表任意目录 *任意文件 比如mybatis文件-->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <plugins>
<!--值得一提的是这个插件从上往下执行-->
<!--    不写这个的话 生产的包不是可执行包 没有主清单属性 也不会把lib打入进去 写这个他会生成一个jar包带lib的 和一个original只有class文件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version> 2.1.9.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--打包源码-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
<!--                    主要原因在于mapstruct 必须配合 lombok可以不要下面这个 但是mapstruct必须有-->
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>1.3.0.Final</version>
                        </path>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>1.16.18</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <!--   dockerfile-maven-plugin      -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.9</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
<!--                            先build在push-->
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
<!--                    跳过整个docker插件 默认false-->
                    <skip>false</skip>
<!--                    可以配下仓库可以push上去 然后需要在maven用户名密码-->
<!--                    <useMavenSettingsForAuth>true</useMavenSettingsForAuth>-->
<!--                    <docker.repostory>hub-tx.keji.com/saas</docker.repostory>&lt;!&ndash;hub-saas.dianzhenkeji.com/saas&ndash;&gt;-->
                    <repository>com.naylor/${project.artifactId}</repository>
                    <tag>${project.version}</tag>
<!--                    这个参数dockerfile要用-->
                    <buildArgs>
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                    <buildDirectory>${session.executionRootDirectory}/target/</buildDirectory>

                </configuration>
            </plugin>
   </plugins>
    </build>

</project>


#alpine优势小
FROM java:8-jre-alpine
#这个所有的镜像和装包从阿里云下载
RUN echo "http://mirrors.aliyun.com/alpine/v3.8/main" > /etc/apk/repositories \
    && echo "http://mirrors.aliyun.com/alpine/v3.8/community" >> /etc/apk/repositories \
  #update更新索引 upgrade升级 安装包 apk info 可以查看安装包
    && apk update upgrade \
    #procps 可以用ps kill w(显示当前登录用户)等命令  curl 百度 bash wc统计行数 bashname 文件名称
    #其实本身自带有我觉得不必要 只是不全 tzdata 要配合后两行用 主要就是当前时间 否则时间不准
    && apk add --no-cache procps curl bash tzdata \
    #这个其实就是调用excel特殊字体 本地的jdk有这些代码 但是openjdkexit没有 所以就弄上l
    && apk add font-adobe-100dpi ttf-dejavu fontconfig \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone
#没有啥用 就是标识下
EXPOSE 8080
#增加个参数 pom文件定义有
ARG JAR_FILE
#把本地jar放到容器里 其实用copy就行 这样ADD优势可以解压tar 可以写网址
ADD target/${JAR_FILE} /app.jar
#docker run 执行的命令 bash -c 其实 默认隐藏带有的 这样把显式弄出来 就可以把命令都写到后面
ENTRYPOINT ["bash","-c","java -jar /app.jar"]

#docker run -d --name=es7 \
#-p 9200:9200 -p 9300:9300 \
#-e "discovery.type=single-node" elasticsearch:7.5.1

#restart docker重启时 自动重启
# docker run --name oap --restart always -d --restart=always -e TZ=Asia/Shanghai -p 12800:12800 -p 11800:11800 --link es7:es7 -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=es7:9200  apache/skywalking-oap-server:6.6.0-es7
#
#docker run -d --name skywalking-ui --restart=always -e TZ=Asia/Shanghai
#-p 8088:8080 --link oap:oap -e SW_OAP_ADDRESS=oap:12800 apache/skywalking-ui:6.6.0
#如果是rancher需要挂载一个盘
#java -javaagent:D:\devSoft\apache-skywalking-apm-6.6.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar=agent.service_name=demo123,collectorbackend_service=127.0.0.1:11800 -jar  demo123.jar
 

上一篇:SkyWalking年轻人的第一个分布式追踪与监控:PHP篇


下一篇:SpringBoot Docker Skywalking agent 不生效