【问题标题】:mvn package of spring boot application with resource, always repackage the entire application带有资源的spring boot应用程序的mvn包,总是重新打包整个应用程序
【发布时间】:2019-07-02 04:51:33
【问题描述】:

在具有资源目录的 Spring Boot 应用程序上运行“mvn package”,即使没有对源代码进行任何修改,也总是会重新打包整个模块。

要重现此问题,请运行以下说明:

  • git 克隆https://github.com/spring-guides/gs-spring-boot.git
  • cd gs-spring-boot/initial
  • mvn 包
  • ls -l --time-style='+%d-%m-%Y %H:%M:%S' 目标/*.jar
    • -rw-rw-r-- 1 mario mario 16224690 08-02-2019 00:19:37 目标/gs-spring-boot-0.1.0.jar
  • mvn 包
  • ls -l --time-style='+%d-%m-%Y %H:%M:%S' 目标/*.jar
    • -rw-rw-r-- 1 mario mario 16224690 08-02-2019 00:19:37 target/gs-spring-boot-0.1.0.jar(同日:OK)

现在添加一个资源目录和一个 application.properties 文件:

  • mkdir src/main/resources
  • 触摸 src/main/resources/application.properties

然后重新运行测试:

  • mvn 包
  • ls -l --time-style='+%d-%m-%Y %H:%M:%S' 目标/*.jar

    • -rw-rw-r-- 1 mario mario 16225034 08-02-2019 00:29:09 目标/gs-spring-boot-0.1.0.jar
  • 等几秒钟

  • mvn 包

  • ls -l --time-style='+%d-%m-%Y %H:%M:%S' 目标/*.jar
    • -rw-rw-r-- 1 mario mario 16225034 08-02-2019 00:29:43 target/gs-spring-boot-0.1.0.jar (NOK)

Maven 输出是这样的:

mario@PRS-NB-005# mvn package
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Building gs-spring-boot 0.1.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ gs-spring-boot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ gs-spring-boot ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ gs-spring-boot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /mario/prj/web/bbb/gs-spring-boot/initial/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ gs-spring-boot ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.21.0:test (default-test) @ gs-spring-boot ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ gs-spring-boot ---
[INFO] Building jar: /mario/prj/web/bbb/gs-spring-boot/initial/target/gs-spring-boot-0.1.0.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.0.5.RELEASE:repackage (default) @ gs-spring-boot ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.337 s
[INFO] Finished at: 2019-02-08T00:29:43+01:00
[INFO] Final Memory: 22M/308M
[INFO] ------------------------------------------------------------------------

【问题讨论】:

    标签: maven spring-boot package


    【解决方案1】:

    看看有效的 pom. 在那里您将看到以下内容:

    <build>
        ...
        <resources>
            <resource>
                <filtering>true</filtering>
                <directory>path/gs-spring-boot/initial/src/main/resources</directory>
                <includes>
                    <include>**/application*.yml</include>
                    <include>**/application*.yaml</include>
                    <include>**/application*.properties</include>
                </includes>
            </resource>
           ...
    

    因为&lt;filtering&gt;true&lt;/filtering&gt; 它使用每个mvn package 创建jar。

    此配置来自:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </parent>
    

    如果您不需要过滤您的 application.properties,您可以在 pom.xml 中从初始位置覆盖。

    【讨论】:

      猜你喜欢
      • 2014-04-03
      • 2020-01-19
      • 2019-08-10
      • 2020-05-19
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      相关资源
      最近更新 更多