Я пытаюсь преобразовать мультимодульный проект в wildfly-swarm. Однако я не знаю, как правильно настроить его.Многофункциональный проект Maven с плагином wildfly-swarm
Когда я запустил mvn wildfly-swarm:run
из основного каталога, он запустил сервер, и ошибка говорит, что он не находит мою систему сохранения. persistence.xml
находится в модуле DBlayer
, поэтому имеет смысл.
Я попытался запустить его из корневого каталога, но он говорит, что рой плагина не определен. Поэтому я попытался определить плагин в файле pom.xml root
вместомодуля pom.xml, но создать -swarm.jar
невозможно.
Как я могу настроить его?
Это мой корень pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>xxx</groupId>
<artifactId>x</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<version.wildfly.swarm>1.0.0.Final</version.wildfly.swarm>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</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>
<modules>
<module>backgroundServices</module>
<module>core</module>
<module>DBLayer</module>
<module>userArea</module>
</modules>
<dependencies>
<!-- Java EE 7 dependency -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!-- Wildfly Swarm Fractions -->
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>cdi</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>jpa-mysql</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>jsf</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>keycloak</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>logging</artifactId>
</dependency>
</dependencies>
</project>
Затем я добавил к core.xml:
<build>
<plugins>
<plugin>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-plugin</artifactId>
<version>${version.wildfly.swarm}</version>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
ядро POM:
<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">
<parent>
<groupId>xxx</groupId>
<artifactId>x</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>core</artifactId>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-plugin</artifactId>
<version>${version.wildfly.swarm}</version>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>xxx</groupId>
<artifactId>DBLayer</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>xxx</groupId>
<artifactId>backgroundServices</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
DBlayer POM:
<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">
<parent>
<groupId>xxx</groupId>
<artifactId>x</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>DBLayer</artifactId>
</project>
Однако я не указал никакого основного метода. Просто у меня persistence.xml в DBLayer под:
DBLayer/SRC/главная/ресурсы/META-INF
Так что я своего рода предполагающие, что рой заботится автоматически определить драйвер и источник данных. Я имею в виду, что в wildfly full вы должны определить драйвер и источник данных в файле standalone.xml. Здесь я ничего не сделал, так что, возможно, это на самом деле проблема. Однако в их примере они тоже этого не делают. https://github.com/wildfly-swarm/wildfly-swarm-examples/blob/master/jpa/jpa-war/src/main/resources/META-INF/persistence.xml
Вот моя настойчивость блок:
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="my-pu" transaction-type="JTA">
<jta-data-source>java:/walbangDbDS</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<shared-cache-mode>DISABLE_SELECTIVE</shared-cache-mode>
<properties>
<!--<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>-->
<!--<property name="javax.persistence.sql-load-script-source" value="sql_scripts/loading_script.sql"/>-->
<property name="hibernate.enable_lazy_load_no_trans" value="true"/>
</properties>
</persistence-unit>
</persistence>
Я не читал stacktrace достаточно хорошо, Мой плохой, что не делал этого. но я на что-то думаю – Ced
@Ced Является ли источник данных правильно создан в автономном режиме.xml'? У вас есть 'faces-config.xml' (я вижу, вы используете зависимость JSF)? По крайней мере, с минимальной настройкой, удаление 'jta-data-source',' exclude-unlisted-classes' и 'shared-cache-mode' в' persistence.xml' заставляет WAR запускаться нормально. – Tunaki
Нет. Я не помещал какой-либо standalone.xml в любом месте, поэтому мой пароль и пользователь для доступа к mysql нигде не определены, ни мой источник данных (ни они в документе/примерах). Насколько я понимаю, это невозможно сделать с военным файлом, потому что он использует пример данных DataSource по умолчанию. Поэтому я теперь пытаюсь развернуть его как .jar, но я думаю, что он не может автоматически обнаружить фракции (jsf и т. Д.), Поэтому похоже, что ему нужна тяжелая настройка, чтобы определить источник данных. – Ced