首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除maven程序集中的jar的所有依赖项。

删除maven程序集中的jar的所有依赖项。
EN

Stack Overflow用户
提问于 2016-10-31 08:11:17
回答 1查看 554关注 0票数 1

我正在尝试创建一个压缩文件,其中包括两个文件夹,每个文件夹将包含一个特定依赖项的插件在pom中。我目前能够创建正确的结构,但我希望确保第一个依赖项的jar不属于第二个依赖项的jar。我目前的pom结构如下:

代码语言:javascript
复制
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>PARENT-GROUP</groupId>
        <artifactId>PARENT-ARTIFACT</artifactId>
        <version>0.2.0-SNAPSHOT</version>
    </parent>
    <groupId>GROUP-ID</groupId>
    <artifactId>ARTIFACT-ID</artifactId>

    <properties>
        <main.project>MAIN-PROJECT</main.project>
        <plugin.version>0.0.1-SNAPSHOT</plugin.version>
        <plugin.artifact>PLUGIN-ID</plugin.artifact>
    </properties>

    <dependencies>
        <dependency>
            <groupId>PLUGIN-GROUP</groupId>
            <artifactId>${plugin.artifact}</artifactId>
            <version>${plugin.version}</version>
        </dependency>
        <dependency>
            <groupId>SECOND-DEPENDENCY</groupId>
            <artifactId>SECOND-ARTIFACT-ID</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>${main.project}-${project.parent.version}</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>${project.basedir}/src/zip.xml</descriptor>
                    </descriptors>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

可以看到,在我正在获得的pom中有两个依赖项。我想要的输出是以下文件夹结构main\lib:包含第二个依赖jar和它在同一个文件夹中的所有依赖项。main\ plugin \plugin:包含所有的第一个依赖项(插件及其所有依赖项),这两个文件夹都不应该包含第一个文件夹的依赖项,反之亦然。到目前为止,我已经提出了以下程序集xml

代码语言:javascript
复制
<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>release</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/lib</outputDirectory>
            <unpack>false</unpack>
            <useProjectArtifact>false</useProjectArtifact>
            <excludes>
                <exclude>
                    *:${plugin.artifact}
                </exclude>
            </excludes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/plugins/${plugin.artifact}-${plugin.version}/${plugin.artifact}-${plugin.version}</outputDirectory>
            <unpack>false</unpack>
            <useProjectArtifact>false</useProjectArtifact>
            <excludes>
                <exclude>
                    *:SECOND-ARTIFACT-ID
                </exclude>
            </excludes>
        </dependencySet>
    </dependencySets>
</assembly>  

这给了我写文件夹的结构,但在这两个文件中都包含了依赖项,我想知道是否有更好的方法自动排除每个jars的依赖关系,而不是逐个排除它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-31 08:20:56

帮助其他人解决问题,如果他们正在寻找的话。您所需要执行的就是在dependencySet中添加一个额外的标记,用户传递筛选,并将其设置为true。

代码语言:javascript
复制
<dependencySet>
    <outputDirectory>/lib</outputDirectory>
    <unpack>false</unpack>
    <useProjectArtifact>false</useProjectArtifact>
    <useTransitiveFiltering>true</useTransitiveFiltering>
    <excludes>
        <exclude>
            *:${plugin.artifact}
        </exclude>
    </excludes>
</dependencySet>

这将确保筛选排除依赖项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40338519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档