Maven配置以在模块之间共享资源
Maven configuration to share resource between modules
我正在开发一个具有 2 个模块的 maven 项目:"impl" 生成带有资源的 jar,"server" 生成服务器实现的 war。
implementation
|
|-impl
| |-src
| | |-main
| | |-resources
| |-pom.xml
|
|-server
| |-src
| | |-main
| | |-java
| | |-test
| | |-java
| |-pom.xml
|
|-pom.xml
当前,当我尝试创建构建时,impl jar 文件包含在服务器 war 文件的 WEB-INF/lib 目录中,因此在生成服务器 war 文件后,它是正在解压并基于此,所有测试都是 运行,一切正常。
作为一项要求,我必须将 jar 与 war 分开,这样 war 文件将不包含任何 impl 的 jar 文件,并且 war 只有在我放置 jar 时才能工作tomcat 的 lib 目录中的文件。
我尝试在服务器的 pom.xml 文件中执行此操作,并将 impl 模块设置为提供的范围,因此 jar 文件不再包含在 war 中,但现在测试失败了,在解压用于 运行 测试的 war 文件后,不包含所需的 impl jar 文件。
我可以在解压缩服务器 war 文件后将 impl 的 jar 文件复制到 WEB-INF/lib 目录中,以便测试正常工作,或者可以将 "impl" jar 文件设置为像在服务器的 WEB-INF/lib 目录时 运行 测试,或者是否有任何其他可能的解决方案来解决我的问题?
您不必将 jar 的范围指定为 provided
。只需将其作为正常依赖项包含在 war 的 pom.xml
.
中即可
相反,您可以简单地将 Maven War Plugin 配置为 从 war
文件中排除 任何文件(包括 jar 文件)。
您将不得不使用 maven war plugin
的 <packagingIncludes>
配置参数。
请参阅下面的示例代码。
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<packagingExcludes>WEB-INF/lib/your_jar_name.jar</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
有关更多信息,您可以查看此 link。
我正在开发一个具有 2 个模块的 maven 项目:"impl" 生成带有资源的 jar,"server" 生成服务器实现的 war。
implementation
|
|-impl
| |-src
| | |-main
| | |-resources
| |-pom.xml
|
|-server
| |-src
| | |-main
| | |-java
| | |-test
| | |-java
| |-pom.xml
|
|-pom.xml
当前,当我尝试创建构建时,impl jar 文件包含在服务器 war 文件的 WEB-INF/lib 目录中,因此在生成服务器 war 文件后,它是正在解压并基于此,所有测试都是 运行,一切正常。
作为一项要求,我必须将 jar 与 war 分开,这样 war 文件将不包含任何 impl 的 jar 文件,并且 war 只有在我放置 jar 时才能工作tomcat 的 lib 目录中的文件。
我尝试在服务器的 pom.xml 文件中执行此操作,并将 impl 模块设置为提供的范围,因此 jar 文件不再包含在 war 中,但现在测试失败了,在解压用于 运行 测试的 war 文件后,不包含所需的 impl jar 文件。 我可以在解压缩服务器 war 文件后将 impl 的 jar 文件复制到 WEB-INF/lib 目录中,以便测试正常工作,或者可以将 "impl" jar 文件设置为像在服务器的 WEB-INF/lib 目录时 运行 测试,或者是否有任何其他可能的解决方案来解决我的问题?
您不必将 jar 的范围指定为 provided
。只需将其作为正常依赖项包含在 war 的 pom.xml
.
中即可
相反,您可以简单地将 Maven War Plugin 配置为 从 war
文件中排除 任何文件(包括 jar 文件)。
您将不得不使用 maven war plugin
的 <packagingIncludes>
配置参数。
请参阅下面的示例代码。
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<packagingExcludes>WEB-INF/lib/your_jar_name.jar</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
有关更多信息,您可以查看此 link。