Java SpringBootMaven插件:从最终jar中排除属性文件
我们有一个Spring引导应用程序,其中既有application.properties,也有application-dev.properties。应用程序属性文件只有一些全面的默认值,而应用程序开发人员属性中有一些真正基本的凭据 当我们部署jar时,应用程序从其部署到的环境中获取其属性,因此,我们不使用概要文件特性,除非我们希望针对“dev”环境进行本地开发 我们的secops部门告诉我们,他们不再希望我们将部署到生产环境中的最终jar中的开发属性文件包括在内,但他们同意我们将该文件保留在版本控制中,以便我们至少可以跟踪更改并在本地构建/运行Java SpringBootMaven插件:从最终jar中排除属性文件,java,maven,spring-boot,Java,Maven,Spring Boot,我们有一个Spring引导应用程序,其中既有application.properties,也有application-dev.properties。应用程序属性文件只有一些全面的默认值,而应用程序开发人员属性中有一些真正基本的凭据 当我们部署jar时,应用程序从其部署到的环境中获取其属性,因此,我们不使用概要文件特性,除非我们希望针对“dev”环境进行本地开发 我们的secops部门告诉我们,他们不再希望我们将部署到生产环境中的最终jar中的开发属性文件包括在内,但他们同意我们将该文件保留在版本
我一直在阅读spring boot maven插件配置,我看不到一种方法,可以告诉maven在构建最终jar时排除该文件,同时仍将其复制到目标目录中,这样我们的团队仍可以在本地进行黑客攻击。我在配置文件方面搞了一点混乱,但我发现,这太令人困惑了,无法向其他人解释,而且随着场景的进一步排列,这变得有点麻烦 最终最简单的事情是配置jar插件以排除该文件。下面是我们pom的一个片段
<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插件以排除该文件。下面是我们pom的一个片段
<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>
可能与@jordiburgos重复不完全一样,我仍然希望maven将该文件复制到/target目录中,以便在本地运行应用程序时,可以利用spring的profile特性。我只想将其从生成的包中排除。您可以将文件和概要文件的排除结合起来—一个用于开发,一个用于部署—这是最简单的方法吗?我不介意使用maven概要文件,这肯定会解决问题,但如果我可以说不要将此文件打包到jar中,我宁愿不使用。我们团队中的大多数人都不是很精通CLI,他们更喜欢通过IDE进行各种UI配置,这并不总是一致的。一个开发人员可能会单击一个复选框,然后在一天中的大部分时间里忘记是什么破坏了这个人的构建,直到我们发现他们做了什么。我可能不得不面对现实,但我希望有办法做到这一点。可能是@jordiburgos的重复不完全是,我仍然希望maven将文件复制到/target目录中,这样当我在本地运行应用程序时,我可以利用spring的配置文件功能。我只想将其从生成的包中排除。您可以将文件和概要文件的排除结合起来—一个用于开发,一个用于部署—这是最简单的方法吗?我不介意使用maven概要文件,这肯定会解决问题,但如果我可以说不要将此文件打包到jar中,我宁愿不使用。我们团队中的大多数人都不是很精通CLI,他们更喜欢通过IDE进行各种UI配置,这并不总是一致的。一个开发人员可能会单击一个复选框,然后在一天中的大部分时间里忘记是什么破坏了这个人的构建,直到我们发现他们做了什么。无论如何,我可能不得不面对现实并这样做,但我希望有一种方法可以做到这一点。确切地说,我需要从最终的jar打包中排除application-dev.properties文件,因此在此设置之后,当我从intellij运行应用程序时,会包括开发人员,但当我使用mvn构建时,会排除clean install dev。干得好!!我应该如何排除我的应用程序和应用程序类的某些包?确切地说,我需要从最终的jar包中排除application-dev.properties文件,所以在这个设置之后,当我从intellij dev运行应用程序时,会包括在内,但当我使用mvn构建时,会排除clean install dev。干得好!!我应该如何排除我的应用程序包和应用程序类?