Maven的.组装项目时如何包含特定文件夹或文件取决于它是开发还是生产?

wha*_*ong 7 maven-2 maven maven-assembly-plugin

使用maven-assembly-plugin

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.1</version>
<configuration>
 <descriptors>
  <descriptor>descriptor.xml</descriptor>
 </descriptors>
 <finalName>xxx-impl-${pom.version}</finalName>
 <outputDirectory>target/assembly</outputDirectory>
 <workDirectory>target/assembly/work</workDirectory>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在descriptor.xml文件中我们可以指定

    <fileSets>
    <fileSet>
        <directory>src/install</directory>
        <outputDirectory>/</outputDirectory>
    </fileSet>
</fileSets>
Run Code Online (Sandbox Code Playgroud)

是否可以根据配置文件包含此文件夹或子文件夹中的特定文件?或者其他一些方式......

像这样:

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <resources>
                <resource>
                    <directory>src/install/dev</directory>
                    <includes>
                        <include>**/*</include>
                    </includes>
                </resource>
            </resources>
        </build>
    </profile>
    <profile>
        <id>prod</id>
        <build>
            <resources>
                <resource>
                    <directory>src/install/prod</directory>
                    <includes>
                        <include>**/*</include>
                    </includes>
                </resource>
            </resources>
        </build>
    </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

但它在包装时将资源放入罐中.但是,正如我上面已经提到的那样,我们需要把它放在拉链中:(谢谢!

Rag*_*ram 15

如果您的资源有一个模式(比如说*.properties),那么您可以在程序集描述符文件中执行以下操作:

<fileSets>
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.properties</include>
            </includes>
        </fileSet>
</fileSets>
Run Code Online (Sandbox Code Playgroud)

这会将*.properties您的target文件夹中的所有内容复制到程序集zip的根文件夹中.根据您pom.xml正在运行的配置文件,该target文件夹中只会显示相应的资源.