创建初始工程

通过如下 mvn 命令创建初始化工程:

$ mvn archetype:generate \
        -DarchetypeArtifactId=wildfly-subsystem \
        -DarchetypeGroupId=org.wildfly.archetypes \
        -DarchetypeVersion=8.0.0.Final \
        -DarchetypeRepository=http://repository.jboss.org/nexus/content/groups/public

mvn 会提示输入相关的信息,如下所示:

名称 输入值

'groupId'

com.acme.corp

'artifactId'

acme-subsystem

'version'

'package'

com.acme.corp.tracker

'module'

com.acme.corp.tracker

创建初始化工程完成以后,进入该项目根目录,运行 mvn install 编译:

$ mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building WildFly: Subsystem Artifact 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
....
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.acme.corp.tracker.extension.SubsystemBaseParsingTestCase
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.154 sec - in com.acme.corp.tracker.extension.SubsystemBaseParsingTestCase
Running com.acme.corp.tracker.extension.SubsystemParsingTestCase
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.11 sec - in com.acme.corp.tracker.extension.SubsystemParsingTestCase

Results :

Tests run: 5, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ acme-subsystem ---
[INFO] Building jar: /home/kylin/tmp/acme-subsystem/target/acme-subsystem.jar
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (build-dist) @ acme-subsystem ---
[INFO] Executing tasks

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:05 min
[INFO] Finished at: 2016-03-12T17:13:12+08:00
[INFO] Final Memory: 29M/194M

版本控制

通常在 WildFly 上扩展 subsystem 需要注意对应的 wildfly-controllerwildfly-server 的版本, 如上在 创建初始工程 中创建的工程,它对应的 wildfly-controllerwildfly-server 的版本较老,如果要将扩展的 subsystem 部署到 WildFly 10,则开发过程中 wildfly-controllerwildfly-server 的版本应和 WildFly 10 对应。参照下表对依赖的版本进行控制。

WildFly Dist WildFly 版本 WildFly Core 版本

wildfly-10.0.0.Final

2.0.10.Final

wildfly-9.0.2.Final

1.0.2.Final

wildfly-9.0.0.Final

1.0.0.Final

wildfly-8.2.0.Final

8.2.0.Final

从 WildFly 9.0 之后 wildfly-controller, wildfly-server 等核心 API 被抽取成为 WildFly Core, 所有我们需要引入 WildFly Core 相关的依赖包如下

<dependency>
    <groupId>org.wildfly.core</groupId>
    <artifactId>wildfly-controller</artifactId>
    <version>${version.org.wildfly.core}</version>
</dependency>
<dependency>
    <groupId>org.wildfly.core</groupId>
    <artifactId>wildfly-server</artifactId>
    <version>${version.org.wildfly.core}</version>
</dependency>
<dependency>
    <groupId>org.wildfly.core</groupId>
    <artifactId>wildfly-subsystem-test</artifactId>
    <type>pom</type>
    <scope>test</scope>
    <version>${version.org.wildfly.core}</version>
</dependency>

详细关于包依赖配置参照 pom.xml