代码之家  ›  专栏  ›  技术社区  ›  mxro

Maven:解压依赖项…然后忘记它们

  •  6
  • mxro  · 技术社区  · 16 年前

    我有一个库a,它依赖于库B和库C。我使用maven依赖插件(见下文)将B和C的库类解压到库A的jar中。

    alt text

    我知道这可以通过手动排除依赖关系A-D中的B和C来实现,但是我想在A中声明,使用A的模块不会知道B和C。

            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack-dependencies</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>unpack-dependencies</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    
    3 回复  |  直到 9 年前
        1
  •  6
  •   Peter Tillemans    16 年前

    我认为您可以用范围“provided”来标记依赖关系,这样依赖项目将假定jar已经“provided”了。通常它们是由容器提供的,在您的情况下,您是在依赖关系A中“提供”它们的。

        2
  •  4
  •   Pascal Thivent    16 年前

    第一种选择,使用 dependency:unpack 而不是 dependency:unpack-dependencies 因此,在插件配置中列出B和C,而不是将它们声明为依赖项(因此D将不知道它们)。

    第二个选项,将B和C声明为A与A的依赖关系 provided Peter建议的范围(参见 Transitive Dependencies‎

        3
  •  0
  •   crowne    16 年前

    本周我使用maven shade插件创建了一个uberjar,做了类似的事情。 然而,当我将uberjar作为一个依赖项添加到另一个项目时,底层jar是以可传递的方式添加的。
    <
    看到了吗 http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html