技术开发 频道

关于Apache Maven您不知道的5件事

  4. 使用配置文件

  多数重大项目至少有一个核心环境,由开发相关的任务、质量保证(QA)、集成和生产组成。管理所有这些环境的挑战是配置您的构建,这必须连接到正确的数据库中,执行正确的脚本集、并为每个环境部署正确的工件。使用 Maven 配置文件让您完成这些任务,而无需为每个环境分别建立明确指令。

  关键在于环境配置文件和面向任务的配置文件的合并。每个环境配置文件定义其特定的位置、脚本和服务器。因此,在我的 pox.xml 文件中,我将定义面向任务的配置文件 “deploywar”,如清单 6 所示:

  清单 6. 部署配置文件

    <profiles>
        
<profile>
            
<id>deploywar</id>
            
<build>
                
<plugins>
                    
<plugin>
                        
<groupId>net.fpic</groupId>
                        
<artifactId>tomcat-deployer-plugin</artifactId>
                        
<version>1.0-SNAPSHOT</version>
                        
<executions>
                            
<execution>
                                
<id>pos</id>
                                
<phase>install</phase>
                                
<goals>
                                    
<goal>deploy</goal>
                                
</goals>
                                
<configuration>
                                    
<host>${deploymentManagerRestHost}</host>
                                    
<port>${deploymentManagerRestPort}</port>
                                    
<username>${deploymentManagerRestUsername}</username>
                                    
<password>${deploymentManagerRestPassword}</password>
                                    
<artifactSource>
                                      address
/target/addressservice.war
                                    
</artifactSource>
                                
</configuration>
                            
</execution>
                        
</executions>
                    
</plugin>
                
</plugins>
            
</build>
        
</profile>
    
</profiles>

   这个配置文件(通过 ID “deploywar” 区别)执行 tomcat-deployer-plugin,被配置来连接一个特定主机和端口,以及指定用户名和密码证书。所有这些信息使用变量来定义,比如 ${deploymentmanagerRestHost}。这些变量在我的 profiles.xml 文件中定义,如清单 7 所示:

  清单 7. profiles.xml

        <!-- Defines the development deployment information -->
        
<profile>
            
<id>dev</id>
            
<activation>
                
<property>
                    
<name>env</name>
                    
<value>dev</value>
                
</property>
            
</activation>
            
<properties>
                
<deploymentManagerRestHost>10.50.50.52</deploymentManagerRestHost>
                
<deploymentManagerRestPort>58090</deploymentManagerRestPort>
                
<deploymentManagerRestUsername>myusername</deploymentManagerRestUsername>
                
<deploymentManagerRestPassword>mypassword</deploymentManagerRestPassword>
            
</properties>
        
</profile>

        
<!-- Defines the QA deployment information -->
        
<profile>
            
<id>qa</id>
            
<activation>
                
<property>
                    
<name>env</name>
                    
<value>qa</value>
                
</property>
            
</activation>
            
<properties>
                
<deploymentManagerRestHost>10.50.50.50</deploymentManagerRestHost>
                
<deploymentManagerRestPort>58090</deploymentManagerRestPort>
                
<deploymentManagerRestUsername>
                  myotherusername
                
</deploymentManagerRestUsername>
                
<deploymentManagerRestPassword>
                  myotherpassword
                
</deploymentManagerRestPassword>
            
</properties>
        
</profile>

   部署 Maven 配置文件

  在清单7的profiles.xml 文件中,我定义了两个配置文件,并根据 env (环境)属性的值激活它们。如果 env 属性被设置为 dev,则使用开发部署信息。如果 env 属性被设置为 qa,那么将使用 QA 部署信息,等等。

  这是部署文件的命令:

mvn -Pdeploywar -Denv=dev clean install

   -Pdeploywar 标记通知要明确包含 deploywar 配置文件。-Denv=dev 语句创建一个名为 env 的系统属性,并将其值设为 dev,这激活了开发配置。传递 -Denv=qa 将激活 QA 配置。

0
相关文章