Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 有没有办法在生成的WAR中不包含JAR,同时在META-INF的pom中也包含该版本?_Java_Maven_Jar_Pom.xml_War - Fatal编程技术网

Java 有没有办法在生成的WAR中不包含JAR,同时在META-INF的pom中也包含该版本?

Java 有没有办法在生成的WAR中不包含JAR,同时在META-INF的pom中也包含该版本?,java,maven,jar,pom.xml,war,Java,Maven,Jar,Pom.xml,War,我参与的项目包括一个主模块和4个其他模块,每个模块都有pom 主要 B C D 网 主模块在DependencyManager中的POM中列出了所有依赖项以及版本。 其余的只包括依赖于POM的库,没有版本号 web模块是我们导出为WAR的模块,它在生成时包含META-INF中的POM 情景1 有没有一种方法可以生成一个WAR文件,该文件不包含除与其他模块对应的JAR之外的所有JAR 我见过一些解决方案提到添加Maven-EAR定义,但这是一个艰苦的过程,而且总体上不会产生更小的项目文件 场景

我参与的项目包括一个主模块和4个其他模块,每个模块都有pom

  • 主要
  • B
  • C
  • D
主模块在DependencyManager中的POM中列出了所有依赖项以及版本。 其余的只包括依赖于POM的库,没有版本号

web模块是我们导出为WAR的模块,它在生成时包含META-INF中的POM

情景1

有没有一种方法可以生成一个WAR文件,该文件不包含除与其他模块对应的JAR之外的所有JAR

我见过一些解决方案提到添加Maven-EAR定义,但这是一个艰苦的过程,而且总体上不会产生更小的项目文件

场景2

否则,如果没有通过POM实现这一点的方法,是否有方法至少将主模块中包含的版本号反映到战争的META-INF POM中


在另一个场景中,至少我可以通过脚本删除jar文件,然后在目标计算机上运行copy dependencies maven命令,而不必花费额外的时间发送可能在那里的jar文件。

通过将不需要的jar的作用域更改为“提供”,可以防止它们包含在最终WAR文件中

    <dependency>
        <groupId>groupId</groupId>
        <artifactId>artifactId</artifactId>
        <version>version</version>
        <scope>provided</scope>
    </dependency>

groupId
人工的
版本
假如

您可以通过将不需要的JAR的作用域更改为“提供”来防止其包含在最终WAR文件中

    <dependency>
        <groupId>groupId</groupId>
        <artifactId>artifactId</artifactId>
        <version>version</version>
        <scope>provided</scope>
    </dependency>

groupId
人工的
版本
假如