`

springboot maven 分离式部署项目

 
阅读更多

spring boot + maven 做 分离式lib下jar包和项目下resource 配置文件分离。

 

1:分离lib主要是因为能够快速发布项目,如果新增jar包情况下,只要将新打包的项目jar包文件上传服务器即可,由于第一次已经上传,后续就无需再上传。分离后的项目jar包很小,可以减小到KB 级别。

 

2:分离resource 下配置文件,如果需要调整配置文件,无需重新打包上传,只要将项目 重启即可,当然可能有人说,可以使用第三方插件来做,比如百度的disconf 和 apollo等,这些都是分布式文件配置中心,无需重启服务。这些方案都可以,也是依据项目的业务来做各自的取舍。

 

下面看代码:demo源码见附件,现在这个不知道啥情况,上传不了,垃圾了。

百度云下载地址:链接:https://pan.baidu.com/s/1kYTX3tMGT3YP91s-FXLiOw&shfl=sharepset 

提取码:57cv 

 

 

spring.application.name= /demo
server.servlet.context-path=/demo
server.port=8080

spring.profiles.path=D:/config

 

 

@Slf4j
@SpringBootApplication
@PropertySource(value = "file:${spring.profiles.path}/demo.properties")
public class DemoApplication {
    @Value("${demo}")
    private  String value;

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @PostConstruct
    public void init() {
        log.info("默认环境参数:{}",value );
    }



 

maven 配置

 

<build>

    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <!-- 打包时排除配置文件 -->
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
                <exclude>**/*.yml</exclude>
            </excludes>
        </resource>
    </resources>

    <plugins>
        <!--<plugin>-->
            <!--<groupId>org.springframework.boot</groupId>-->
            <!--<artifactId>spring-boot-maven-plugin</artifactId>-->
        <!--</plugin>-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <fork>true</fork>
                <skip>true</skip>
                <executable>C:\Program Files\Java\jdk1.8.0_191\bin\javac.exe</executable>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                     <manifest>
                         <addClasspath>true</addClasspath>
                         <classpathPrefix>lib/</classpathPrefix>
                         <useUniqueVersions>false</useUniqueVersions>
                         <mainClass>com.example.demo.DemoApplication</mainClass>
                     </manifest>
                    <manifestEntries>
                        <Class-path>./</Class-path>
                    </manifestEntries>
                </archive>
                <excludes>
                    <exclude>*.properties</exclude>
                    <exclude>config/**</exclude>
                    <exclude>*.xml</exclude>
                    <exclude>*.yml</exclude>
                </excludes>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <!--<version>3.1.1</version>-->
            <executions>
                <execution>
                    <id>copy</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>
                            ${project.build.directory}/lib
                        </outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

</build>



需要注意的地方:这里打包的时候会忽略所有的配置文件,在启动的时候就要指定主要的配置文件了
java –jar -Dspring.config.location=xxx/xxx/xxxx.properties xxxx.jar
<excludes>
    <exclude>*.properties</exclude>
    <exclude>config/**</exclude>
    <exclude>*.xml</exclude>
    <exclude>*.yml</exclude>
</excludes>

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics