Maven 2 Maven程序集生成

Maven 2 Maven程序集生成,maven-2,maven-plugin,Maven 2,Maven Plugin,目前正在尝试以这样一种方式打包一个小应用程序,我们的ops团队可以更轻松地部署它。 我的要求是对项目进行编译和压缩 我从命令行运行命令“mvn-DmyProfile clean generate sources package”,并创建了一个src.xml文件,该文件在声明输出使用zip格式的基础上详细说明了哪个文件应该放在哪里 结果,我在目标文件夹中得到了两个文件,一个jar和一个zip文件。zip文件的结构正是我所需要的,只是我的属性文件没有从POM中注入正确的值。相反,所有的{variab

目前正在尝试以这样一种方式打包一个小应用程序,我们的ops团队可以更轻松地部署它。 我的要求是对项目进行编译和压缩

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

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

更要命的是,这个问题之所以发生,是因为我试图将Java服务包装器添加到我的项目中,并且需要使用src.xml文件来声明所有新文件在项目文件夹结构中的位置。在此之前,完全相同的命令可以完美地工作,甚至jar结构也与Eclipse中的实际项目结构更加一致

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

非常感谢您的帮助

谢谢,
Yann

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

无论如何,我被告知不要将配置文件放在Zip存档的根目录下。因此,在我的案例中,Maven只是将配置文件推入归档文件而没有注入它们,这些配置文件本来就不应该存在

但以下是我的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>
其中“env prod”是pom.xml中包含要注入的值的概要文件


有什么想法吗?

好的,我找到了第二个问题的答案。maven命令错误,我成功执行的是:

mvn clean package -P env-prod

这会在我的配置文件中将正确的值放在正确的位置。请注意使用开关-P而不是-D来选择配置文件。

是否有可能粘贴pom的相关部分(如果需要,使用虚拟值)。-D定义了一个属性,可以选择使用该属性来触发配置文件激活-P直接激活配置文件,而不管pom.xml中的激活规则是什么
mvn -Denv-prod clean generate-sources package
mvn clean package -P env-prod