最近,我使用 Eclipse 和 Oracle Glassfish 服务器插件在服务器上部署我的 web 应用程序。
但是,我想使用 Maven 2 以批处理模式执行此操作,并在部署之前进行一些测试。
我想做以下任务:
- 从任何存储库(我应该使用哪个?)获取所需的依赖项(如果有的话)。
- 运行单元测试
- 如果测试成功,部署它
我正在运行 Maven 2 和 Glassfish 3.2.1
你能支持我一些示例项目,包括 pom.xml 文件吗?这种事情有知识资源吗?
最好的祝福
你描述的过程很常见。确实,maven 本身会
构建生命周期由阶段组成
这些构建生命周期中的每一个都由不同的构建阶段列表定义,其中构建阶段代表生命周期中的一个阶段。
例如,默认生命周期具有以下构建阶段(有关构建阶段的完整列表,请参阅生命周期参考):
- 验证 - 验证项目是否正确并且所有必要的信息都可用
- compile - 编译项目的源代码 test - 使用合适的单元测试框架测试编译好的源代码。这些测试不应该要求打包或部署代码
- package - 获取编译后的代码并将其打包成可分发的格式,例如 JAR。
- 集成测试 - 如有必要,将包处理并部署到可以运行集成测试的环境中
- 验证 - 运行任何检查以验证包是否有效并符合质量标准
- install - 将包安装到本地存储库中,作为本地其他项目的依赖项
部署 - 在集成或发布环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享。这些构建阶段(以及此处未显示的其他构建阶段)按顺序执行以完成默认生命周期。鉴于上述构建阶段,这意味着当使用默认生命周期时,Maven 将首先验证项目,然后尝试编译源代码,针对测试运行它们,打包二进制文件(例如 jar),针对该项目运行集成测试package,验证包,将验证过的包安装到本地仓库,然后将安装好的包部署到指定的环境中。
要完成所有这些,您只需要调用要执行的最后一个构建阶段,在这种情况下,部署:
mvn 部署
您应该使用maven glassfish 插件,然后执行
mvn glassfish:deploy
这里是来自官方文档的完整示例:
...
<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>
我假设您的意思是 GlassFish Server 3.1.2 :-)
嵌入式服务器指南中介绍了将 Maven 与 GlassFish 文档结合使用:http:
//docs.oracle.com/cd/E26576_01/doc.312/e24932/embedded-server-guide.htm#gijhs
希望这可以帮助。