我有一个非常简单的问题,我也尝试搜索,但无法找到正确的答案。
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/