您可以创建一个多模块项目,其中一个模块包含您的域类,另一个模块是您的 Web 应用程序。通过这样做,您的外部第三方war
可以使用您的域类,只需包含jar
.
这是目录结构的简单概述:
.
├── pom.xml
├── 域名
| ├── pom.xml
| └── 源
| └── 主要
| └── java
| └── com
| └── 堆栈溢出
| └── 域名
| ├── SomeDao.java
| └── AnotherDao.java
└── 网络
├── pom.xml
└── 源
└── 主要
├── java
| └── com
| └── 堆栈溢出
| └── 网络
| └── SomeBackingBean.java
└── 网页应用
└── WEB-INF
└── web.xml
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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>Q12576767</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>${project.artifactId}-${project.version}</name>
<modules>
<module>domain</module>
<module>web</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- Inter-Module dependencies -->
<dependency>
<groupId>com.stackoverflow</groupId>
<artifactId>Q12576767-domain</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
域/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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.stackoverflow</groupId>
<artifactId>Q12576767</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>Q12576767-domain</artifactId>
<name>${project.artifactId}-${project.version}</name>
</project>
网页/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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.stackoverflow</groupId>
<artifactId>Q12576767</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>Q12576767-web</artifactId>
<packaging>war</packaging>
<name>${project.artifactId}-${project.version}</name>
<dependencies>
<dependency>
<groupId>com.stackoverflow</groupId>
<artifactId>Q12576767-domain</artifactId>
</dependency>
</dependencies>
</project>
通过这样做,您可以解耦一些依赖关系并可以重用模块中的jar
文件domain
。
最后,您还可以查看使用Overlays通过war
将 3rd-partywar
与您自己的war
. 我不知道这在您的设置中是否可行,但值得一看。我已经成功使用了它。