Wildfly Swarm. SSL, debug, etc.

В последнее время наметилась тенденция перехода с application server-ов на использование uber-jar-ов. Не Spring Boot-ом единым жива тема.
Для тех, кто привык (и правильно!) программировать с использованием J2EE стандартов, ребята из RedHat уже давно сваяли прекрасный toolkit для переделки WildFly-oriented J2EE приложений в standalone jars.
В прицнипе, всё прекрасно и логично: лично у меня был опыт переделки WildFly приложения со всеми сервисами, JPA и прочим в standalone версию в течение часа. Короче говоря, WildFly Swarm оставил очень хорошее впечатление.
Едиснтвенное, с чем пришлось покопаться (в другом приложении), так это с HTTPS соединением, с одновременным дебагом этого самого standalone приложения.

Итак, обо всём по порядку.

Чтобы поднять (java -jar myapp.jar) standalone приложение с поддержкой HTTPS сначала требуется сгенерировать самописный (как минимум) сертификат, что делается примерно так (одной строкой, просто и быстро, без интерактива):

keytool -genkey -keystore wfswarm.jks -keyalg RSA -keysize 2048 -validity 999 -dname "CN=Vasja Pupkin, OU=MojProjekt, O=RogaiKopyta, L=Riga, ST=Latvia, C=LV" -storepass mypassword -keypass mypassword

Получили файлик wfswarm.jks. Это то, что нам нужно.
Добавим конфигурацию в файл wfswarm\src\main\resources\project-defaults.yml

swarm:
  https:
    port: 7443
    keystore:
      path: c:/keys/wfswarm.jks
      password: mypassword

(в принципе, project-defaults.yml может ничего больше и не содержать)

На данном этапе проект должен подниматься как uber-jar и отвечать (с самописным сертификатом) по адресу https://localhost:7443/myapp
Поскольку сама сборка uber-jar занимает время, которое не хочется тратить во время разработки, то заметно быстрее мы можем поднимать наш Wildfly Swarm проект с помощью Maven плагина.
Конфигурация плагина в POM файле:

    <properties>
...
        <version.wildfly.swarm>2018.5.0</version.wildfly.swarm>
    </properties>
...
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.wildfly.swarm</groupId>
                <artifactId>bom</artifactId>
                <version>${version.wildfly.swarm}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
...
            <plugin>
                <groupId>org.wildfly.swarm</groupId>
                <artifactId>wildfly-swarm-plugin</artifactId>
                <version>${version.wildfly.swarm}</version>
               <configuration>
                    <!--Enable HTTPS on debug-->
                    <fractions>management</fractions>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>package</goal>
                        </goals>
                        <!--Enable HTTPS for final JAR-->
                        <configuration>
                          <fractions>management</fractions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

Обратите внимание, что тут присутствует <!--Enable HTTPS on debug-->. Конечно же, мы хотим поднимать приложение по-возможности быстро, да и ещё в debug режиме. Именно поэтому понадобилось упоминать отдельно <fractions>management</fractions> для простой сборки и для дебага, чтобы и там и там работало через HTTPS.
Ну и, соответственно, для относительно быстрого старта с дебагом делаем:

mvn wildfly-swarm:run -Dswarm.debug.port=5005

а финальная сборка - как обычно:

mvn clean package

Profit.