【问题标题】:exclude entries in MANIFEST.MF排除 MANIFEST.MF 中的条目
【发布时间】:2013-11-06 06:37:00
【问题描述】:

我目前正在使用 maven-ear-plugin 构建和 EAR 文件

我需要从 MANIFEST.MF 文件中排除一些 Class-Path: 条目。

例如,我的类路径中有 3 个依赖项 hibernate-core.jar、quartz-1.6.5.jar 和 poi-3.7.jar(在我的 pom.xml 依赖项中)

当我构建我的 EAR 文件时,所有这些条目都将自动添加到我的 MANIFEST.MF 文件的 Class-Path 条目中。

我的 maven 构建如下所示

<build>
    <finalName>MyEAR</finalName>
    <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ear-plugin</artifactId>
        <configuration>
            <archive>
                <addMavenDescriptor>false</addMavenDescriptor>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <addExtensions />
                    <classpathPrefix />
        </manifest>
                <manifestFile>src/main/resources/META-INF/MANIFEST.MF               </manifestFile>
            </archive>
            .....
            .....
        </configuration>
    </plugin>
    </plugins>
</build>

在上面的构建文件中

 <addClasspath>true</addClasspath>

负责添加 MANIFEST.MF 条目。

我的要求是在依赖quartz-1.6.5.jar 和 poi-3.7.jar 中只添加2个jar,并排除remaning。

如果我给出 false,则所有条目都将从 MANIFEST.MF 类路径中排除。 如果从 pom 中删除依赖项,则会出现编译错误。

我怎样才能实现上述场景。

谢谢,

【问题讨论】:

    标签: java maven pom.xml


    【解决方案1】:

    将范围“提供”添加到非必需依赖项:

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

    【讨论】:

    • 谢谢,除了使用提供的范围之外还有其他方法吗?我正在使用 maven-ejb-plugin 来构建我的 ejb jar。我正在寻找类似在 maven-ejb-plugin 下应用过滤器/通配符过滤器的东西
    • 插件“maven-ejb-plugin”和“maven-ear-plugin”有自定义清单文件的“manifestFile”选项。
    猜你喜欢
    • 2019-12-13
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2021-04-16
    • 1970-01-01
    相关资源
    最近更新 更多