java - Maven 避免包含依赖项

标签 java maven jboss wildfly maven-3

我有一个非常简单的问题,我也尝试搜索,但无法找到正确的答案。

I am not sure if this could be done with maven or this is related to server deployments, I just need the right direction to proceed

我在野外部署应用程序,我们只指向模块,并且我们的包本身没有包含任何依赖项。

这样我们就必须为每个项目重复加载内存中的所有依赖项。我知道我们可以为依赖项构建一个单独的模块,但是当我构建实际项目并包含依赖项模块时,所有依赖项都将被包含在内(实际的 jar 会增加大小)。我只需指出驱动器上的现有依赖项或使用服务器中已部署的依赖项。

假设我们有项目 A 和项目 B,其 POM 以下

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

    <!-- Additional lines to be added here... -->

</project>

我不想将 org.springframework.boot 包含到两个项目中,相反,它应该在部署到服务器或单独的模块 C 后引用本地存储库,该模块可以由机器人 A 和 B 使用,前提是 A 和 B 不包含实际的jar 文件。 希望我说得足够清楚。非常感谢任何帮助或建议。

最佳答案

首先,让我提醒您,您的方法有一些缺点:如果您将依赖项放在服务器中,升级依赖项会立即更改所有已部署的项目(因为它们依赖于它),因此您紧密连接了所有项目。

但是,如果您希望服务器提供依赖项,则需要将范围设置为 provided 。这意味着您需要查看父 POM ( mvn dependency:list ) 定义的依赖项列表,然后在 <dependencyManagement> 中输入条目。对于每个依赖项,添加 <scope>provided</scope>在构建时过滤掉它们。

关于java - Maven 避免包含依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57286187/

相关文章:

java - Jbehave 无法找到多个故事

java - Jboss中的spring boot返回错误404

java - 调用不同类的函数

java - JPanel 上的paintComponent() 性能不佳

java - Intellij自动目录添加war文件

maven - pom 错误 - org.apache.maven.archiver.MavenArchiver.getManifes

java - JBoss 10 当我将 XML 更改为 JSON 格式以将数据从客户端发送到 REST 端点时,我出现客户端 java.lang.NoClassDefFoundError

spring - Wildfly 在启动时抛出 UnsupportedOperationException(命名上下文是只读的)

java - 阻止 ArrayOutOfBoundsException 在 Java 中停止程序执行

java - 使用 JSSE 验证 SSL 证书的扩展验证 (EV)