您描述的過程非常普遍。 事實上時,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>
'mvn clean deploy'沒有幫助嗎? – Ilya