在许多情况下,无需先设置应用程序就无法部署应用程序。 在JBoss AS 7.x中,您可能需要配置例如数据库连接。 或者,您必须配置一个安全领域。 也许您还想调整SLSB池…在任何一种情况下,团队中的所有开发人员都必须共享一个共同的或至少相似的配置。
通常,可以在不定期发送的电子邮件或某些Wiki页面上找到此信息。 但是,在发布后的某个时间,当您必须签出分支以修复某些错误或添加新功能时会发生什么? 您将必须重构对该分支有效的配置。 那么,为什么不将配置文件与仅用于配置整个应用程序服务器的Maven配置一起添加到版本控制系统中呢?
让我们尝试保持简单,只使用公共可用和常用的插件。 首先,让我们将以下所需的所有版本添加到pom.xml的属性部分:
<properties>
<jboss.install.dir>${project.build.directory}/jboss</jboss.install.dir>
<jboss.version>7.2.0.Final</jboss.version>
<app.version>${project.version}</app.version>
<ojdbc.version>11.2.0.1.0</ojdbc.version>
</properties>
我们还在这里定义JBoss AS的安装目录。 这样,我们可以根据需要使用命令行选项-D对其进行更改。 现在,我们添加一个新的配置文件,这样我们就必须显式打开设置过程,并且它不属于常规构建:
<profile>
<id>setupAs</id>
<build>
<plugins>
...
</plugins
</build>
</profile>
如果我们在maven存储库中部署了当前的JBoss版本作为Maven工件,则可以使用maven-dependency-plugin下载JBoss并将其解压缩到上面给出的安装目录中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>unpack-jboss</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.jboss</groupId>
<artifactId>jboss-as</artifactId>
<version>${jboss.version}</version>
<type>zip</type>
<outputDirectory>${project.build.directory}/jboss</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
现在,应用程序服务器已解压缩,我们必须添加JDBC驱动程序以及应用程序(或您需要的任何其他内容)。 我们通过向maven依赖插件添加另一个执行块来进行设置:
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>our-company</groupId>
<artifactId>our-application-ear</artifactId>
<version>${app.version}</version>
<type>ear</type>
<outputDirectory>${jboss.install.dir}/jboss-as-${jboss.version}/standalone/deployments</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${ojdbc.version}</version>
<outputDirectory>${jboss.install.dir}/jboss-as-${jboss.version}/standalone/deployments</outputDirectory>
<destFileName>ojdbc6.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
最后但并非最不重要的一点是,我们还希望根据需要调整标准配置文件。 我们可以使用maven-resources-plugin替换每个文件中的变量值。 因此,我们将这些文件的模板添加到JBoss模块的resources文件夹中,并调用目标副本资源:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-jboss-configuration</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${jboss.install.dir}/jboss-as-${jboss.version}/standalone/configuration</outputDirectory>
<resources>
<resource>
<directory>src/main/resources/jboss/standalone/configuration</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-jboss-bin</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${jboss.install.dir}/jboss-as-${jboss.version}/bin</outputDirectory>
<resources>
<resource>
<directory>src/main/resources/jboss/bin</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
可以在命令行中使用-D选项指定过滤值。 如果团队中有多个成员,则还可以为每个用户创建一个包含其特定配置值的属性文件。 如果使用OS用户作为文件名,则可以通过当前登录用户的名称轻松选择文件。 这样,每个团队成员都可以通过简单地运行以下命令轻松地设置自己的完全配置的应用程序服务器实例:
mvn clean install -PsetupAs
为了防止使用下一个clean调用删除新配置的服务器,我们为常规构建禁用了maven clean插件:
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.5</version>
<configuration>
<skip>false</skip>
</configuration>
</plugin>
在上面创建的setupAs配置文件中,我们当然必须启用它,以便仅通过调用“ mvn clean -PsetupAs”就可以删除整个安装。 现在切换到较旧的分支很容易,因为我们不会浪费任何时间寻找正确的配置…
翻译自: https://www.javacodegeeks.com/2013/10/setting-up-your-application-server-with-maven.html