如何配置maven jar插件以排除配置文件中的属性

时间:2012-09-07 09:30:10

标签: maven maven-jar-plugin

我在我的pom中有这个配置

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <excludes>                      
            <exclude>**/logging/*</exclude>
            <exclude>**/config/*</exclude>
        </excludes>
    </configuration>
</plugin>

我使用配置文件来处理从本地环境到生产环境的不同行为。 在使用本地配置文件执行mvn install时是否可能无法激活排除项? 我尝试在这样的本地环境中设置空白属性 但插件抱怨。

3 个答案:

答案 0 :(得分:1)

这是一种解决方案,可能存在更好的解决方案。我认为最简单的方法是让您的DEV环境免受jar插件的任何配置的影响。然后将您的PROD配置放在专用配置文件中:

<profiles>                                                         
    <profile>                                                      
        <id>PROD</id>                                              
        <build>                                                    
            <plugins>                                              
                <plugin>                                           
                    <groupId>org.apache.maven.plugins</groupId>    
                    <artifactId>maven-jar-plugin</artifactId>      
                    <version>2.2</version>                         
                    <configuration>                                
                        <excludes>                                 
                            <exclude>**/logging/*</exclude>        
                            <exclude>**/config/*</exclude>         
                        </excludes>                                
                    </configuration>                               
                </plugin>                                          
            </plugins>                                             
        </build>                                                   
    </profile>                                                     
</profiles>  

当您需要构建生产jar时,请启动:

mvn clean install -PPROD

答案 1 :(得分:0)

日志记录和配置文件资源是否仅用于测试?如果是,请将它们放入${basedir}/src/test/resources。他们将在您的测试的类路径上,但不会在最终的jar中结束,并且您不会需要特定的jar插件配置。

答案 2 :(得分:0)

我发现最好的解决方法是在DEV环境中执行时使用无效值进行过滤。

<profiles>
    <profile>
        <id>env-local</id>
        <activation>
            <property>
                <name>env</name>
                <value>local</value>
            </property>
        </activation>
        <properties>
            <jndi.iban0>cont0Data</jndi.iban0>
            <config.file.path>classpath:config</config.file.path>
            <logging.file.path>classpath:logging</logging.file.path>
            <exclude.logging>none</exclude.logging>
            <exclude.config>none</exclude.config>
        </properties>
    </profile>
</profiles>