2012-06-12 104 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>