Maven配置文件无法正常工作且测试失败

时间:2013-03-07 16:22:12

标签: java maven netbeans

我开始在Maven中使用配置文件来构建多环境jar。

我按照official docs执行此操作。

首先,验证问题:

我已经读过你应该总是有一个由 Maven 项目生成的包,但我只想生成多环境jar(即:只更改每个jar的属性文件< / em>的)。我不认为生成多个项目是必要的,我是对的吗?

现在解释:

我有一个应用程序,它会在将一些信息插入数据库之前读取文件并应用一组特定的评论。我想测试这个验证是否正常,并且我得到了正确的结果,无论它是否在数据库中失败。 所以在这个应用程序中我使用动态设置DAO 。这是:我的应用程序在运行时从 config.properties 文件中获取DAO类。我创建了一些将模拟真实DAO的外观DAO(例如:DAOApproveAll,它将模拟数据库中的所有事务都正常)。

在单元测试中,我加载 config.properties 以更改(以及稍后还原更改)param 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外观),以验证如果数据库中出现不同结果会发生什么。

现在,我将 config.properties 更改为2个文件: config-dev.properties 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 。当然我创建了第三个 config.properties (另外两个将使用-dev和-prod)它编译的ant但不生成2个jar但只生成一个。


我的正式问题:

  • 我对个人资料做错了什么?
  • 如何让测试运行Ok并且只针对dev?

1 个答案:

答案 0 :(得分:1)

要通过Netbeans激活配置文件,您可以尝试以下任务: -

  1. 右键点击您的项目,然后从上下文菜单中选择properties
  2. 从左侧面板中的Configurations选择Categories
  3. 在右侧面板中,您将看到pom中定义的各种配置文件。您可以Activate选择它们并点击Activate按钮,也可以点击Add按钮创建新的。
  4. 我希望这可能有所帮助。