【问题标题】:Spring Boot Maven Plugin: Exclude properties file from final jarSpring Boot Maven 插件:从最终 jar 中排除属性文件
【发布时间】:2019-08-12 16:40:47
【问题描述】:

我们有一个 Spring Boot 应用程序,其中有一个 application.properties 和一个 application-dev.properties。应用程序属性文件只有一些全面的默认值,而 application-dev 属性中有一些非常基本的凭据。

当我们部署我们的 jar 时,应用程序从其部署到的环境中获取其属性,因此,我们不使用配置文件功能,除非我们想针对我们的“开发”环境进行本地开发。

我们的 secops 部门告诉我们,他们不再希望我们从部署到生产的最终 jar 中包含该开发属性文件,但他们同意我们将文件保留在版本控制中,以便我们至少可以跟踪更改并在本地构建/运行。

我一直在阅读 spring-boot-maven-plugin 配置,但我看不到一种方法可以告诉 maven 在构建最终 jar 时排除该文件,同时仍将其复制到 target 目录所以我们的团队仍然可以在本地进行黑客攻击。

【问题讨论】:

  • @jordiburgos 不完全是,我仍然希望 maven 将文件复制到 /target 目录中,因此当我在本地运行应用程序时,我可以利用 spring 的配置文件功能。我只是希望它从生成的包中排除(当前为 jar)
  • 您可以结合排除文件和配置文件(一个用于开发,一个用于部署)
  • 这是最简单的方法吗?我不介意使用 maven 配置文件,这肯定会解决问题,但老实说,如果我只能说“不要将文件打包到 jar 中”,我宁愿不这样做。我们团队中的大多数人都不是很精通 CLI,并且更喜欢通过他们的 IDE 进行各种 UI 配置,这并不总是一致的(一个开发人员可能会单击一个复选框并忘记哪个会在一天的大部分时间里破坏该人的构建,直到我们发现他们做了什么)。无论如何,我可能不得不面对音乐并这样做,但我希望有办法做到这一点。

标签: java maven spring-boot


【解决方案1】:

我在个人资料上搞砸了一段时间,但我发现向别人解释太混乱了,而且随着场景的额外排列出现,变得有点麻烦。

最后最简单的就是配置jar插件来排除文件。这是来自我们的 pom 的 sn-p。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.1</version>
            <configuration>
                <excludes>
                    <!-- This is where the exclusion occurs -->
                    <exclude>**/application-*.properties</exclude>
                </excludes>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

【讨论】:

  • 究竟是什么我必须从最终的 jar 包装中排除 application-dev.properties 文件,所以在我从 intellij dev 运行应用程序时包含此设置但当我使用 mvn clean 构建时install dev 被排除在外。伟大的工作!
  • 我应该如何排除我的应用程序和应用程序类的一些包?
猜你喜欢
  • 2018-12-14
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
相关资源
最近更新 更多