0

最近,我使用 Eclipse 和 Oracle Glassfish 服务器插件在服务器上部署我的 web 应用程序。

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

我想做以下任务:

  1. 从任何存储库(我应该使用哪个?)获取所需的依赖项(如果有的话)。
  2. 运行单元测试
  3. 如果测试成功,部署它

我正在运行 Maven 2 和 Glassfish 3.2.1

你能支持我一些示例项目,包括 pom.xml 文件吗?这种事情有知识资源吗?

最好的祝福

4

2 回答 2

2

你描述的过程很常见。确实,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>
于 2012-06-14T21:04:22.177 回答
1

我假设您的意思是 GlassFish Server 3.1.2 :-)

嵌入式服务器指南中介绍了将 Maven 与 GlassFish 文档结合使用:http:
//docs.oracle.com/cd/E26576_01/doc.312/e24932/embedded-server-guide.htm#gijhs

希望这可以帮助。

于 2012-06-13T17:03:37.047 回答