2012-06-12 82 views
0

最近,我使用Eclipse和Oracle Glassfish服务器插件在服务器上部署我的Web应用程序。使用Maven2部署Web应用程序包括Glassfish测试

但是,我希望在使用Maven 2的批处理模式下执行此操作,并在部署前进行一些测试。

我愿做以下工作:

  1. 获取需要的依赖(如果有的话)从任何存储库(其中应怎么用?)。
  2. 运行单元测试
  3. 如果测试成功,部署

我正在运行的Maven 2和Glassfish 3.2.1

你能支持我的一些示例项目包括pom.xml文件?有没有这种东西的知识资源?

问候

+0

'mvn clean deploy'没有帮助吗? – Ilya

回答

2

您描述的过程非常普遍。 事实上时,Maven itselft将

甲构建生命周期由相

每个这些构建的生命周期是通过构建阶段的一个不同的列表中定义的,其中一个构建阶段表示在生命周期的阶段的。

例如,默认的生命周期有以下构建阶段(对于构建阶段的完整列表,请参阅生命周期参考):

  • 验证 - 验证项目是否正确,以及所有必要的信息,可用
  • 编译 - 编译项目源代码 使用合适的单元测试框架测试编译的源代码。这些测试不应要求打包或部署代码
  • 打包 - 获取已编译的代码并将其打包为可分发的格式,例如JAR。
  • 集成测试 - 过程,如果有必要部署包到集成测试可以运行的环境
  • 验证 - 运行任何检查,验证包是有效的,符合质量标准
  • 安装 - 安装包入本地存储库,用作本地其他项目中的依赖项
  • 部署 - 在集成或发行版环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享。 这些构建阶段(加上其他构建阶段未在此处显示)按顺序执行以完成默认生命周期。考虑到上面的构建阶段,这意味着当使用默认生命周期时,Maven将首先验证项目,然后将尝试编译源代码,针对测试运行这些源代码,打包二进制文件(例如jar),运行集成测试包,验证包,将验证过的包安装到本地存储库,然后在指定的环境中部署已安装的包。

    要做到所有这些,你只需要调用被执行的最后构建阶段,在这种情况下,部署:

    MVN部署

您应该使用maven glassfish plugin,和然后执行

mvn glassfish:deploy 

这里从官方文档的完整ewample:

... 
    <build> 
     ... 
     <plugins> 
      ... 
      <plugin> 
       <groupId>org.glassfish.maven.plugin</groupId> 
       <artifactId>maven-glassfish-plugin</artifactId> 
       <version>2.1</version> 
       <configuration> 
        <glassfishDirectory>${glassfish.home}</glassfishDirectory> 
        <user>${domain.username}</user> 
        <adminPassword>${domain.password}</adminPassword> 
        <!-- <passFile>path/to/asadmin/passfile</passFile> --> 
        <autoCreate>true</autoCreate> 
        <debug>true</debug> 
        <echo>false</echo> 
        <terse>true</terse> 
        <skip>${test.int.skip}</skip> 
        <domain> 
         <name>${project.artifactId}</name> 
         <adminPort>4848</adminPort> 
         <httpPort>8080</httpPort> 
         <httpsPort>8443</httpsPort> 
         <iiopPort>3700</iiopPort> 
         <jmsPort>7676</jmsPort> 
         <reuse>false</reuse> 
         <jvmOptions> 
          <option>-Djava.security.auth.login.config=${project.build.testOutputDirectory}/login.conf</option> 
         </jvmOptions> 
         <properties> 
          <property> 
           <name>server.log-service.file</name> 
           <value>${domain.log.dir}/server.log</value> 
          </property> 
         </properties> 
         <auth> 
          <realm> 
           <name>testRealm</name> 
           <className>com.sun.enterprise.security.auth.realm.file.FileRealm</className> 
           <properties> 
            <property> 
             <name>jaas-context</name> 
             <value>test</value> 
            </property> 
            <property> 
             <name>file</name> 
             <value>${project.build.outputDirectory}/keyfile</value> 
            </property> 
           </properties> 
          </realm> 
         </auth> 
         <!-- <resourceDescriptor>path/to/resources.xml</resourceDescriptor> --> 
         <resources> 
          <connectionFactory> 
           <jndiName>jms/testQueueConnectionFactory</jndiName> 
           <type>queueConnectionFactory</type> 
           <properties> 
            <property> 
             <name>UserName</name> 
             <value>guest</value> 
            </property> 
            <property> 
             <name>Password</name> 
             <value>guest</value> 
            </property> 
            <property> 
             <name>AddressList</name> 
             <value>localhost:7676</value> 
            </property> 
           </properties> 
          </connectionFactory> 
          <jmsTopic> 
           <jndiName>jms/testTopic</jndiName> 
           <destinationName>TestTopic</destinationName> 
           <connectionFactory> 
            <jndiName>jms/testTopicConnectionFactory</jndiName> 
            <properties> 
             <property> 
              <name>UserName</name> 
              <value>guest</value> 
             </property> 
             <property> 
              <name>Password</name> 
              <value>guest</value> 
             </property> 
             <property> 
              <name>AddressList</name> 
              <value>localhost:7676</value> 
             </property> 
            </properties> 
           </connectionFactory> 
          </jmsTopic> 
          <jdbcDataSource> 
           <name>SomeDS</name> 
           <type>connectionPoolDataSource</type> 
           <poolName>SomePool</poolName> 
           <className>com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource</className> 
           <description>Some JDBC Connection Pool</description> 
           <allowNonComponentCallers>false</allowNonComponentCallers> 
           <validateConnections>true</validateConnections> 
           <validationMethod>metaData</validationMethod> 
           <properties> 
            <property> 
             <name>portNumber</name> 
             <value>3306</value> 
            </property> 
            <property> 
             <name>password</name> 
             <value>somePassword</value> 
            </property> 
            <property> 
             <name>user</name> 
             <value>someUser</value> 
            </property> 
            <property> 
             <name>serverName</name> 
             <value>some.host.somewhere</value> 
            </property> 
            <property> 
             <name>databaseName</name> 
             <value>SomeDB</value> 
            </property> 
           </properties> 
          </jdbcDataSource> 
         </resources> 
        </domain> 
        <components> 
         <component> 
          <name>${project.artifactId}</name> 
          <artifact>${project.build.directory}/artifacts/${project.build.finalName}.war</artifact> 
         </component> 
        </components> 
       </configuration> 
      </plugin> 
      ... 
     </plugins> 
     ... 
    </build> 
    ... 
</project>