java - 仅从 Maven WAR 项目部署类 JAR

标签 java maven war

我有一个 Maven 项目,它创建一个 WAR 文件和一个 JAR 文件(使用 -classes 分类器,在 <attachClasses>true</attachClasses> 配置中使用 maven-war-plugin)。当我运行mvn deploy时,这两个 Artifact 都部署到 Maven Central(通过 Sonatype Nexus)。

这一切都很好,但实际上没有必要将 WAR 部署到 Maven Central - 只需部署 -classes JAR 就足够了,因为 WAR 总是上传到我们的 github 站点以供下载,并且只有 JAR 才会用作另一个项目的依赖项。

有没有办法在 Maven 中配置它?我以为<primaryArtifact>false</primaryArtifact>maven-war-plugin配置可能会修复它,但它没有。

最佳答案

根据Maven WAR Plugin FAQs ,这个问题需要一些重构才能解决。您必须将项目拆分为一个仅生成类 JAR 的“类”模块,以及将整个 Web 应用程序构建为 WAR 文件的第二个模块。然后,WAR 模块可以包含 JAR 模块作为依赖项。

不同的 Maven 配置文件(一个用于构建和部署 JAR,另一个用于构建 WAR 并跳过部署)也可能是一种解决方案。但说实话,这看起来相当老套,也更难维护。我不确定从长远来看这会让您的生活更轻松。

关于java - 仅从 Maven WAR 项目部署类 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38954509/

相关文章:

java - builder 模式

java - 在 glassfish/tomcat/etc 中管理 .properties 文件的优雅解决方案

java - ANT:复制文本文件的某些部分

java - Thymeleaf 不解释 sec 标签

java - 将子模块中的小程序添加到 Maven 中的 WAR 文件

java - UTC 时间自动添加到我的日期变量中

maven - Powermock 和 JMockit 单元测试的测试覆盖率

java - 使用 Aether 获取 MavenProject 的所有依赖项(包括传递性依赖项)

eclipse - 如何在不遇到 java.lang.ClassNotFoundException 的情况下将 JAR 库添加到 WAR 项目?类路径与构建路径与/WEB-INF/lib

java - 使 WAR 像 JAR 一样可执行,以在应用程序之外提供命令行界面 (JBoss)