为什么spring boot modify jar in source resources?
Why spring boot modify jar in source resources?
我的 spring 启动结构是这样的:
/src/main/resources/
+- /lib
+- logback-classic-1.1.9-source.jar
+- logback-classic-1.1.9.jar
和我使用的 pom :
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
然后我将 spring 引导项目打包到 war 文件中。
当我使用 mvn clean install 获取 war 文件时,令我震惊的是
logback-classic-1.1.9-source.jar
和logback-classic-1.1.9.jar
中的war已改!!
源 lib 文件中的两个 jar 都是 248KB,但在 war 文件中,它们发生了变化
到 418KB 和 420KB!! jar坏了,7-zip无法解压!
我不知道为什么。任何人都可以帮助我吗?谢谢!
我也可以用
<excludes>
<exclude>**/*.jar</exclude>
</excludes>
排除将 jar 移入 war,但我只想知道我的代码有什么问题让 spring 引导更改资源中的 jar。
我也尝试了spring项目,这样的话,一切都OK!我的 jar 在 war 文件中没有改变。
您在 src/main/resources 路径下有库,它们被复制时 filtering 设置为 true。所以在复制资源的过程中,如果包含${...}
.
形式的String,就会被修改
第一个解决方案是不将 jars 作为资源包括在内。您真的需要最终工件中的源 jar 吗?如果没有,请删除此 lib 文件夹并向 logback-classic jar 添加依赖项:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.9</version>
</dependency>
顺便说一句,最新版本是1.2.3。当您使用 mvn package
构建项目时,使用它会将 logback-jar 放在它所属的位置,并且是添加依赖库的正常方式。
如果你真的想在资源中保留这个,你应该从过滤中排除 lib 目录并复制它不过滤:
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>lib</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/lib</directory>
<filtering>false</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
我的 spring 启动结构是这样的:
/src/main/resources/
+- /lib
+- logback-classic-1.1.9-source.jar
+- logback-classic-1.1.9.jar
和我使用的 pom :
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
然后我将 spring 引导项目打包到 war 文件中。
当我使用 mvn clean install 获取 war 文件时,令我震惊的是
logback-classic-1.1.9-source.jar
和logback-classic-1.1.9.jar
中的war已改!!
源 lib 文件中的两个 jar 都是 248KB,但在 war 文件中,它们发生了变化
到 418KB 和 420KB!! jar坏了,7-zip无法解压!
我不知道为什么。任何人都可以帮助我吗?谢谢!
我也可以用
<excludes>
<exclude>**/*.jar</exclude>
</excludes>
排除将 jar 移入 war,但我只想知道我的代码有什么问题让 spring 引导更改资源中的 jar。
我也尝试了spring项目,这样的话,一切都OK!我的 jar 在 war 文件中没有改变。
您在 src/main/resources 路径下有库,它们被复制时 filtering 设置为 true。所以在复制资源的过程中,如果包含${...}
.
第一个解决方案是不将 jars 作为资源包括在内。您真的需要最终工件中的源 jar 吗?如果没有,请删除此 lib 文件夹并向 logback-classic jar 添加依赖项:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.9</version>
</dependency>
顺便说一句,最新版本是1.2.3。当您使用 mvn package
构建项目时,使用它会将 logback-jar 放在它所属的位置,并且是添加依赖库的正常方式。
如果你真的想在资源中保留这个,你应该从过滤中排除 lib 目录并复制它不过滤:
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>lib</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/lib</directory>
<filtering>false</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>