为了构建多环境jar,我开始使用Maven配置文件。
我是按照官方文档做的。
首先,验证问题:
我已经读到,你应该总是有一个包生成的Maven项目,但我只想生成多环境的jar(即:只更改每个jar的属性文件)。我不认为有必要生成多个项目来做到这一点,我是对的吗?
现在解释:
我有一个应用程序,读取一个文件,并在将一些信息插入数据库之前应用一组特定的评论。我想测试这个验证是否正确,并且无论稍后在数据库中是否失败,我都能得到正确的结果。所以在这个应用程序中,我使用一个动态设置的DAO。这是:我的应用程序从配置中获取DAO类。属性文件在运行时。我创建了一些模拟真实DAO的facade DAO(例如:DAOApproveAll,它将模拟数据库中的所有事务都正常进行)。
在单元测试中,我加载了配置。属性更改(并稍后恢复更改)参数daoimplclass的值,该参数是保存类的参数。例如: Properties prop = Configurator.getProperties("config");
final String DAODEFAULT = prop.getProperty("daoimplclass");
final static String DAOAPPROVEALL = "com.package.dao.DAOAllApproved";
public void testAllAproved() {
try {
Processor processor = Processor.getInstance();
prop.setProperty("daoimplclass", DAOAPPROVEALL);
...
}
finally{prop.setProperty("daoimplclass", DAODEFAULT);}
我做了很多测试(使用不同的DAO facade),以验证如果数据库中出现不同的结果会发生什么。
现在,我改变了我的配置。config-dev. properties到2个文件:config-prod.properties和。并将原来的pom.xml更改为使用如下配置文件:<profiles>
<profile>
<id>dev</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-dev.properties"
tofile="${project.build.outputDirectory}/config.properties"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>false</skip>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>dev</classifier>
<source>1.6</source>
<target>1.6</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<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>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<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>
现在当我做"清洁和建造"时在Netbeans中,我得到错误执行测试,因为它找不到config.properties。当然,我创建了第三个配置。属性(其他两个将与-dev和-prod一起)使它编译但不生成2个jar文件,而只有一个。
我的正式问题:
- 我做错了什么配置文件?
- 我怎么能允许测试运行正常,只对开发?
要通过Netbeans激活配置文件,您可以尝试以下任务:-
- 右键单击项目并从上下文菜单中选择
- 在左侧面板的
Categories
中选择Configurations
- 在右侧面板中,您将看到pom中定义的各种配置文件。您可以通过选择它们并单击
Activate
按钮来Activate
它们,或者您可以通过单击Add
按钮来创建新的on。
properties
。