因此,事实证明 Maven 创建了一个“快照”jar,该 jar 包含在 Zip 存档内的 lib 文件夹中。该快照 jar 包含注入正确值的配置文件。换句话说,如果您使用类加载器而不是文件系统引用加载配置文件,它应该可以工作。
无论如何,我被告知不要将配置文件放在 Zip 存档的根目录下。因此,在我的情况下,Maven 只是在存档中推送而不注入它们的配置文件甚至不应该放在首位。
但这里是包含在 pom.xml 中的 src.xml 文件的新内容:
<assembly>
<id>bin</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>src/main/bin</directory>
<outputDirectory>/bin</outputDirectory>
<includes>
<include>**/*.sh</include>
</includes>
<fileMode>777</fileMode>
</fileSet>
<fileSet>
<directory>lib</directory>
<outputDirectory>/lib</outputDirectory>
<includes>
<include>**/*.jar</include>
</includes>
</fileSet>
<!-- Wrapper files -->
<fileSet>
<directory>lib/wrapper</directory>
<outputDirectory>/lib</outputDirectory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/bin/wrapper</directory>
<outputDirectory>/bin/wrapper</outputDirectory>
<includes>
<include>**/*</include>
</includes>
<fileMode>777</fileMode>
</fileSet>
<fileSet>
<directory>src/main/conf</directory>
<outputDirectory>conf</outputDirectory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/lib</outputDirectory>
<includes>
<include>*:jar:*</include>
</includes>
<excludes>
<exclude>*:sources</exclude>
</excludes>
</dependencySet>
</dependencySets></assembly>
这仍然会输出一个 jar 和一个 zip 存档,但由于 zip 包含快照 jar,现在一切都应该没问题。
除了......(这可能是另一篇文章,所以如果我离开这个问题的主题,请告诉我)
配置文件中注入的值不是我的 POM.xml 中的配置文件中的值。它们是我的 settings.xml 中的那些,它们位于我的 .m2 文件夹中。但是在 settings.xml 配置文件中关闭激活似乎并不能解决这个问题:
<activation>
<activeByDefault>false</activeByDefault>
</activation>
这里再次是我运行的命令行:
mvn -Denv-prod clean generate-sources package
其中“env-prod”是 pom.xml 中包含要注入的值的配置文件。
任何的想法?