gpt4 book ai didi

maven-2 - Maven 程序集生成

转载 作者:行者123 更新时间:2023-12-02 18:01:28 24 4
gpt4 key购买 nike

目前正在尝试打包一个小型应用程序,以便我们的运营团队可以更轻松地部署它。我的要求是项目被编译并压缩。

我从命令行运行命令“mvn -DmyProfile cleangenerate-sourcespackage”,并创建了一个 src.xml 文件,该文件详细说明了在声明使用 zip 格式输出的基础上哪个文件应该放在哪里。

结果我在目标文件夹中得到了 2 个文件,一个 jar 和一个 zip 文件。 zip 文件的结构完全符合我的需要,只是我的属性文件没有从 POM 中注入(inject)正确的值。相反,所有的 {variables} 仍然存在。另一方面,jar 似乎注入(inject)了所有正确的值,但 jar 的结构不是我需要的。

更关键的是,这个问题仅在我尝试将 Java Service Wrapper 添加到我的项目中并且需要 src.xml 文件来声明所有新文件应位于项目文件夹结构中的位置时才会发生。在此之前,完全相同的命令可以完美运行,甚至 jar 结构也与 Eclipse 中的实际项目结构更加一致。

并不是责怪 Java 服务包装器,只是想知道,通过尝试让该部分的所有内容正常工作,我是否没有与 MVN 程序集产生冲突。

非常感谢任何帮助。

谢谢,严恩

最佳答案

事实证明,Maven 创建了一个“快照”jar,该 jar 包含在 Zip 存档内的 lib 文件夹中。该快照 jar 包含注入(inject)正确值的配置文件。换句话说,如果您使用类加载器而不是文件系统引用加载配置文件,它应该可以工作。

无论如何,我被告知不要将配置文件放在 Zip 存档的根目录下。因此,在我的例子中,Maven 只是推送到存档中而不注入(inject)它们的配置文件根本就不应该存在。

但这里是我的 src.xml 文件的新内容,它包含在 pom.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,现在一切都应该没问题了。

除了......(这可能是另一篇文章,所以如果我偏离了这个问题的主题,请告诉我)

配置文件中注入(inject)的值不是我的 POM.xml 中配置文件中的值。它们来 self 的 settings.xml,位于我的 .m2 文件夹中。但在settings.xml配置文件中关闭激活似乎并不能解决这个问题:

<activation>
<activeByDefault>false</activeByDefault>
</activation>

这是我运行的命令行:

mvn -Denv-prod clean generate-sources package

其中“env-prod”是 pom.xml 中包含要注入(inject)的值的配置文件。

有什么想法吗?

关于maven-2 - Maven 程序集生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/715375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com