Вот пример, который может быть полезен -> EAR Testing
Это называется «EAR Testing», но его также легко можно использовать для создания военных файлов. Для целей этого ответа я изменю каталог eartesting
, упомянутый в примере, на wartesting
EAR-файлы и WAR-файлы практически идентичны, поскольку на уровне спецификации Java EE мы решили разрешить war
-файлам содержать EJB, компоненты CDI и т. Д.
Этот пример использует систему сборки Maven и имеет два модуля: один для «объектов данных» и один для «бизнес-логики». Кажется, соответствует тому, что вы думаете о мышлении и может быть полезной отправной точкой. Он содержит крошечный пример приложения с модульными тестами для EJB.
Возможно, вы еще не читали, но часто люди считают, что EJB трудно тестировать. Их больше нет, и в этом примере показано последнее совместимое со спецификацией решение, поэтому вы можете убить нескольких зайцев одним выстрелом, начиная с этой настройки.
Что не включает в себя модуль для создания окончательного WAR-файла, который вы бы развернули в рабочей среде. Для его создания достаточно добавить третий модуль
- wartesting / бизнес-модель
- wartesting / бизнес-логика
- wartesting / business-war (добавлено)
В busines-war
у вас будет 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">
<parent>
<groupId>org.superbiz</groupId>
<artifactId>myear</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>business-war</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.superbiz</groupId>
<artifactId>business-model</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.superbiz</groupId>
<artifactId>business-logic</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Затем создайте следующие каталоги:
- wartesting / бизнес-война / SRC / главная / Java
- wartesting / бизнес-война / SRC / главная / WebApp
И скажем, например, что вы добавляете в каждый файл следующие файлы:
- wartesting / бизнес-война / SRC / главная / Java / орг / superbiz / Foo.java
- wartesting / бизнес-война / SRC / главная / веб-приложение / WEB-INF / web.xml
- wartesting / бизнес-война / SRC / главная / веб-приложение / index.html
После сборки вы должны получить файл войны под wartesting/business-war/target/
, содержащий:
WEB-INF/web.xml
WEB-INF/classes/org/superbiz/Foo.class
WEB-INF/lib/business-model-1.1-SNAPSHOT.jar
index.html