gpt4 book ai didi

Maven 为同一个项目生成两个不同的 WAR 文件

转载 作者:行者123 更新时间:2023-12-01 06:58:25 24 4
gpt4 key购买 nike

我有一个 Maven 网络服务项目,由两个不同的服务类 testClass1 和 testClass2 组成。我想为同一个项目的两个类有两个不同的 WAR 文件。目前我正在为这两个服务生成单个 WAR 文件。

如何为同一个项目生成两个不同的 WAR 文件?提前致谢。

最佳答案

一般注意事项

作为 per doc说,你试图实现的是一个糟糕的做法:

Producing Multiple Unique JARs from a Single Source Directory

As many people that complain about not being able to spread out their sources into multiple source directories seem to complain about not wanting to spread anything out, producing several unique artifacts from a single directory using includes and excludes.

Why isn't this recommended?

This practice can be confusing and risky.

You may end up building two JARs that include the same classes - this indicates that the common functionality should have been abstracted into a separate dependency.You may end up introducing a dependency between the two JARs that you didn't realise, and often a circular dependency. This indicates that the classes are in the wrong JAR, or perhaps that everything should just be a single JAR.

适合 maven 最佳实践的解决方案

您应该考虑将您的项目分成两个不同的项目,每个项目都有一个 pom,因此每个项目都会生成一个 Artifact ,这里是一场 war 。

两个简单的项目

您可以通过使用两个简单的项目来实现:

service1-simple-webproject
|-- src
`-- pom.xml

service2-simple-webproject
|-- src
`-- pom.xml

这很简单,但您可能无法轻松共享它们之间的属性/依赖项/关系。

只需将您自己的代码拆分到单独的目录中,并尝试使其作为两个独立的项目工作。

如果您认为它们之间有一些代码可以共享(实用程序、配置等),请参阅下一节关于多模块的内容。

多模块结构

或者您可以使用适当的多模块层次结构:

parent-multimodule-project
|-- service1-simple-webmodule
| |-- src/
| `-- pom.xml
|-- service2-simple-webmodule
| |-- src
| `-- pom.xml
`-- pom.xml

这将允许您在项目之间建立关系,在更高级别共享配置,...看看这个文档:

我可能会引导您创建第三个项目,可能命名为 core 或 util,它会生成一个 jar,其中包含两个 Web 项目的公共(public)类。

这真是最好的办法!

功能性解决方案,但强烈不建议

我只会给你一些信息,因为我什至确信它可以在这种情况下工作。

Maven Assembly Plugin 允许您根据 xml 描述文件生成不同格式的包(zip、jar、war、其他...)。这里的文档:http://maven.apache.org/plugins/maven-assembly-plugin/

再次,我强烈建议您不要使用这种解决方法。

关于Maven 为同一个项目生成两个不同的 WAR 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16057490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com