Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 避免Maven配置文件生成重复的JAR_Java_Maven - Fatal编程技术网

Java 避免Maven配置文件生成重复的JAR

Java 避免Maven配置文件生成重复的JAR,java,maven,Java,Maven,我是Maven的新手,我正在尝试将Maven配置为生成两个JAR:一个用于开发,一个用于生产。它们之间唯一的区别是config.properties文件的数据库连接不同,因此我认为可以使用 令我惊讶的是,我不能同时生成两个文件。在使用概要文件时,每次构建时都必须选择概要文件,并使用概要文件创建一个jar(在我的例子中)。问题是,它将创建2个完全相等的jar,一个没有分类器,另一个带有分类器(,如myjar.jar和myjar-prod.jar),因此如果我想生成dev和prod-jar,我必须创

我是Maven的新手,我正在尝试将Maven配置为生成两个JAR:一个用于开发,一个用于生产。它们之间唯一的区别是config.properties文件的数据库连接不同,因此我认为可以使用

令我惊讶的是,我不能同时生成两个文件。在使用概要文件时,每次构建时都必须选择概要文件,并使用概要文件创建一个jar(在我的例子中)。问题是,它将创建2个完全相等的jar,一个没有分类器,另一个带有分类器(,如myjar.jar和myjar-prod.jar),因此如果我想生成dev和prod-jar,我必须创建4个jar(使用一个配置文件运行第一个Maven,然后使用另一个配置文件运行另一个Maven)

这是为什么?对我来说没有任何意义。。。但是好吧

我的问题是:

有什么方法可以避免生成两个jar吗?我的意思是,我希望有不同的配置文件,并且我已经接受(悲痛地)多次执行构建过程(每个配置文件一个),我可以避免每次有两个jar,并且只有一个没有分类器吗?

这是我的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.p2p.</groupId>
    <artifactId>LoadACHFiles</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>MyProject</name>
    <url>http://maven.apache.org</url>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>          
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>        
            </plugin>           
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>config-*.properties</exclude>          
                </excludes>
            </resource>      
        </resources>
    </build>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>org.jasypt</groupId>
            <artifactId>jasypt</artifactId>
            <version>1.9.0</version>
            <type>jar</type>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>prod</id>
             <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>test</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>                                    
                                    <tasks>
                                        <!--<delete file="${project.build.outputDirectory}/config.properties"/>-->
                                        <copy file="src/main/resources/config-prod.properties"
                                              tofile="${project.build.outputDirectory}/config.properties"/>
                                    </tasks>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.13</version>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <version>2.4</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                                <configuration>
                                    <classifier>prod</classifier>
                                    <source>1.6</source>
                                    <target>1.6</target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>        
    </profiles>
</project>

4.0.0
com.p2p。
加载文件
1.0-快照
罐子
我的项目
http://maven.apache.org
${project.artifactId}
org.apache.maven.plugins
maven编译器插件
2.3.2
1.6
1.6
src/main/resources
配置-*.properties
UTF-8
朱尼特
朱尼特
3.8.1
测试
com.oracle
ojdbc
1.4
org.jasypt
茉莉花
1.9.0
罐子
戳
maven antrun插件
测试
跑
maven surefire插件
2.13
真的
maven jar插件
2.4
包裹
罐子
戳
1.6
1.6

我在概要文件部分删除了maven jar插件。更改为:

<profile>
        <id>prod</id>
         <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>test</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>                                    
                                <tasks>
                                    <!--<delete file="${project.build.outputDirectory}/config.properties"/>-->
                                    <copy file="src/main/resources/config-prod.properties"
                                          tofile="${project.build.outputDirectory}/config.properties"/>
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.13</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.4</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <configuration>
                                <classifier>prod</classifier>
                                <source>1.6</source>
                                <target>1.6</target>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile> 

戳
maven antrun插件
测试
跑
maven surefire插件
2.13
真的
maven jar插件
2.4
包裹
罐子
戳
1.6
1.6
为此:

<profile>
        <id>prod</id>
         <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>test</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>                                    
                                <tasks>
                                    <!--<delete file="${project.build.outputDirectory}/config.properties"/>-->
                                    <copy file="src/main/resources/config-prod.properties"
                                          tofile="${project.build.outputDirectory}/config.properties"/>
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.13</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>               
            </plugins>
        </build>
    </profile> 

戳
maven antrun插件
测试
跑
maven surefire插件
2.13
真的

如果您可以使用分类JAR,那么您可以在不使用概要文件的情况下执行您想要的操作,因此您可以使用单个构建命令为所有环境提供JAR。关键是要明白怎么做
my.database.url=${database.url}
my.database.user=${database.user}
my.database.pw=${database.pw}
database.url=URL-for-dev
database.user=user-for-dev
database.pw=pw-for-dev