在Maven中编译/提供War/Jar包装的范围



说到Maven,我知道:

  1. 当打包为 JAR 时,最终结果中不包含编译依赖项
  2. 另一方面,如果包装是战争,它就会被包括在内
  3. 提供的依赖项永远不会包含在最终结果中,无论是 JAR 还是 WAR 打包
例如,在

jar 打包中的编译范围依赖项的情况下,在编译时,Maven 将简单地从本地/远程存储库获取依赖项,而不会在最终工件中包含此类依赖项。

如果所有这些都是正确的,我的问题是:

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

2)那么子里提供的依赖关系和战争包装有什么区别?

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

如果将 Maven 程序集插件集成到 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)那么罐子里提供的依赖关系和战争包装有什么区别?

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

最新更新