【问题标题】:Can CLI archives be deployed on WildFly using Maven plugin?可以使用 Maven 插件在 WildFly 上部署 CLI 存档吗?
【发布时间】:2018-02-05 21:51:30
【问题描述】:

如何使用 wildfly-maven-plugin 在 WildFly (8-10) 中部署 CLI 存档(压缩)?

我创建了一个simple example:一个带有archive.cli 文件的Maven 项目。此存档将部署 PostgreSQL jdbc 驱动程序。

如果我使用 jboss-cli.sh/bat 部署它,它会按预期工作:PostgreSQL 驱动程序将显示为部署。

试试:

部署 src/main/archive.cli

如果我使用 maven-wildfly-plugin 部署它,WildFly 将部署该文件但不会解压缩/展开它 - 我有一个无用的 archive.cli 文件作为部署,但没有安装驱动程序。为什么?

试试:

mvn 验证

我的 pom.xml 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <name>deploy-archive-cli</name>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.foo</groupId>
    <artifactId>deploy-archive-cli</artifactId>
    <version>1</version>
    <packaging>pom</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.wildfly.plugins</groupId>
                <artifactId>wildfly-maven-plugin</artifactId>
                <version>1.2.1.Final</version> 
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>deploy</goal>
                        </goals>
                        <configuration>
                            <filename>archive.cli</filename>
                            <targetDir>src/main/</targetDir>
                            <skip>false</skip>
                            <checkPackaging>false</checkPackaging>
                        </configuration>
                    </execution>                
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

项目结构如下:

.
├── pom.xml
└── src
    └── main
        ├── archive
        │   ├── deploy.scr
        │   ├── postgresql-42.2.1.jar
        │   └── undeploy.scr
        └── archive.cli

Java8.我尝试过使用 deploy-artifact、Win/Linux、WildFly 8-10 ... 我可以配置 wildfly-maven-plugin 并告诉它扩展工件吗?一个例子将不胜感激。

我了解替代方案是使用 Maven 或运行 jboss-cli 部署 EAR/WAR/JAR 工件,但这是一个 IT 部门希望处理它的方式。应该可以吧?

简单的例子Maven项目可以下载here

谢谢,

詹斯

【问题讨论】:

    标签: maven plugins command-line-interface wildfly archive


    【解决方案1】:

    我相信 CLI 部署是 CLI 的一部分,不会由正常的部署操作处理。但是在 maven 插件中,您可以执行 CLI 命令。

    对于您的示例,pom 配置如下所示。

    <plugin>
        <groupId>org.wildfly.plugins</groupId>
        <artifactId>wildfly-maven-plugin</artifactId>
        <version>1.2.1.Final</version> 
        <executions>
            <execution>
                <phase>validate</phase>
                <goals>
                    <goal>execute-commands</goal>
                </goals>
                <configuration>
                    <commands>
                        <command>deploy --path=${project.basedir}/src/main/archive.cli</command> 
                    </commands>
                </configuration>
            </execution>                
        </executions>
    </plugin>
    

    需要注意的一点是,在测试时我发现了WFMP-94。如果您使用的是 Java 1.8.0_161,您可能会遇到此错误。但是,它在 Oracle JDK 1.8.0_151 上对我来说效果很好。

    【讨论】:

    • 太棒了,解决方法就像一个魅力!非常感谢。
    • 但是...这实际上是我在尝试直接从 Maven 存储库部署 cli 文件时遇到的问题的简化(使用 wildfly:deploy-artifact)。而且由于 CLI 无法从 Maven 存储库进行部署,并且 maven-wildfly-plugin 显然无法部署 cli-files……它也有解决方法吗?
    • 我不确定是否有解决方法。我想您可以使用maven-dependency-plugin 将工件复制到您的目标目录,然后执行 CLI 部署命令。
    猜你喜欢
    • 2015-11-03
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    相关资源
    最近更新 更多