【问题标题】:compile/provided scopes for War/Jar packagings in Maven为 Maven 中的 War/Jar 包装编译/提供范围
【发布时间】:2017-06-01 11:43:19
【问题描述】:

说到 Maven,我知道:

  1. 打包为jar时,最终结果中不包含compile依赖项
  2. 另一方面,如果包装是 war,则包含它
  3. provided 依赖项永远不会包含在最终结果中,无论是 jar 还是 war 打包

例如,在 jar 包装中的 compile 范围依赖的情况下,在编译时 Maven 将简单地从本地/远程存储库中获取依赖,而不包括最终工件中的这种依赖关系。

如果这一切都是正确的,我的问题是:

1) 那么谁通常在运行时为 jar 工件提供 compile 范围的依赖项?

2) jar 中的 provided 依赖和 war 打包之间有什么区别?

【问题讨论】:

标签: maven maven-assembly-plugin


【解决方案1】:

1) 那么谁通常在运行时为 jar 工件提供编译范围的依赖项?

如果您将Maven assembly plugin 集成到您的pom.xml,则范围为compile 的依赖项将与您的项目工件一起打包到程序集中。没有添加范围为provided 的依赖:

这是一个例子。它假定存在特定的程序集描述符 (projectAssembly.xml),而不是默认的。

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <finalName>${artifactId}-${version}-distribution</finalName>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <descriptor>src/main/assembly/projectAssembly.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>assembly</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

2) 那么,jar 中提供的依赖项和 war 打包之间有什么区别?

在这两种情况下,都不会添加依赖项。

【讨论】:

    猜你喜欢
    • 2011-10-02
    • 2015-06-05
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2011-05-31
    • 2016-04-16
    • 2017-01-01
    相关资源
    最近更新 更多