Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将提供的依赖项传播到依赖项目_Java_Maven - Fatal编程技术网

Java 将提供的依赖项传播到依赖项目

Java 将提供的依赖项传播到依赖项目,java,maven,Java,Maven,我有简单的Maven项目结构: mainProject |-- subProject1 | |-- subSubProject |-- subProject2 关键是,我有一个mainProject,它包含每个子项目中使用的依赖项(这些依赖项对于每个子项目都是通用的),但我不希望在编译和构建WAR文件(提供了范围)的最后将它们包含在WAR文件中。另外,我不想在每个子项目中声明依赖项,因为我已经在mainProject中声明了它们 WAR文件包括其构建文件中的所有子项目库 谢谢在我看来,这个

我有简单的Maven项目结构:

mainProject
|-- subProject1
|   |-- subSubProject
|-- subProject2
关键是,我有一个mainProject,它包含每个子项目中使用的依赖项(这些依赖项对于每个子项目都是通用的),但我不希望在编译和构建WAR文件(提供了范围)的最后将它们包含在WAR文件中。另外,我不想在每个子项目中声明依赖项,因为我已经在mainProject中声明了它们

WAR文件包括其构建文件中的所有子项目库


谢谢

在我看来,这个问题有两种解决方案

1.)您可以将范围更改为编译,并且在构建war文件时,可以使用maven war插件排除war文件中不需要的所有JAR,如下所示

<build>
<plugins>
  <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
      <packagingExcludes>WEB-INF/lib/xyz.jar</packagingExcludes>
    </configuration>
  </plugin>
</plugins>

maven战争插件
2.4
WEB-INF/lib/xyz.jar


2.)如果它们是特定于第三方的JAR,那么您可以将它们移动到服务器库目录,并且在运行时,您的web容器将提供所需的类。

在我看来,这个问题有两种解决方案

1.)您可以将范围更改为编译,并且在构建war文件时,可以使用maven war插件排除war文件中不需要的所有JAR,如下所示

<build>
<plugins>
  <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
      <packagingExcludes>WEB-INF/lib/xyz.jar</packagingExcludes>
    </configuration>
  </plugin>
</plugins>

maven战争插件
2.4
WEB-INF/lib/xyz.jar


2.)如果它们是特定于第三方的JAR,那么您可以将它们移动到服务器库目录,在运行时,您的web容器将提供所需的类。

我对Maven没有太多经验,但我记得在我使用过的poms文件中列出了父POM。您似乎将主项目pom作为父pom包括在内,然后还将子项目特定的依赖项添加到各自的pom中。我认为父pom中提供的scope=最终仍将保持公共依赖项不成为war文件。

我对Maven没有太多经验,但我记得在我使用过的pom文件中列出了父pom。您似乎将主项目pom作为父pom包括在内,然后还将子项目特定的依赖项添加到各自的pom中。我认为父pom中提供的scope=最终仍将保持公共依赖项不成为war文件。

您能更详细地描述您的问题和您想要什么吗?您尝试过什么还没有做到这一点?mainProject只是一个简单的父pom,它保存了其他子项目的依赖关系?你问的有点模糊。这些是第三方JAR还是你的内部项目特定JARThanksEach项目是一个jar,有自己的依赖项。mainProject只是一个“公共”项目,通过所有其他子项目使用辅助类作为依赖项。此外,mainProject还包含子项目1、子项目、子项目2和每个其他子项目(共享依赖项)中所需的依赖项。我将这些依赖项声明为scope=provided,因为我不希望它们放在我的webapp WEB-INF/lib文件夹中(太多),但它们是其他子项目所必需的。提供的范围不允许传播依赖项,我正在寻找一种方法来绕过它。管理不同类型的依赖项及其版本的最简单方法是使用一个包含其他子项目信息的父pom.xml,在每个子项目中指定必要的依赖项,并从父pom继承版本。让我知道如果你需要更多关于如何做的信息,你能更详细地描述你的问题和你想要什么吗?您尝试过什么还没有做到这一点?mainProject只是一个简单的父pom,它保存了其他子项目的依赖关系?你问的有点模糊。这些是第三方JAR还是你的内部项目特定JARThanksEach项目是一个jar,有自己的依赖项。mainProject只是一个“公共”项目,通过所有其他子项目使用辅助类作为依赖项。此外,mainProject还包含子项目1、子项目、子项目2和每个其他子项目(共享依赖项)中所需的依赖项。我将这些依赖项声明为scope=provided,因为我不希望它们放在我的webapp WEB-INF/lib文件夹中(太多),但它们是其他子项目所必需的。提供的范围不允许传播依赖项,我正在寻找一种方法来绕过它。管理不同类型的依赖项及其版本的最简单方法是使用一个包含其他子项目信息的父pom.xml,在每个子项目中指定必要的依赖项,并从父pom继承版本。如果您需要有关如何操作的更多信息,请告诉我1。它们太多,无法创建此排除配置。我一直在考虑这个问题,但项目在不断发展,最终我会失去这些依赖关系的踪迹。2.这些第三方罐子存储在其他地方,并由VirtualWebAppLoaderHanks@tech idiot装入容器中。我通过使用PackageIncludes解决了这个问题。1。它们太多,无法创建此排除配置。我一直在考虑这个问题,但项目在不断发展,最终我会失去这些依赖关系的踪迹。2.这些第三方罐子存储在其他地方,并由VirtualWebAppLoaderHanks@tech idiot装入容器中。我通过使用PackageIncludes解决了这个问题。