java - Eclipse:从构建路径中排除 'runtime' maven 依赖项

标签 java eclipse maven primefaces itext

我有一个项目需要依赖 iText 5.5.2 和 iText 2.1.7(Primefaces 在运行时需要此特定版本,并且由于许可证问题而无法与 iText 5 一起使用)。

所以我的 pom.xml 中有这个:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.2</version>
    <scope>compile</scope>
</dependency>

<!-- iText 2.1.7 is necessary at runtime to have the 'Export to PDF' function of Primeface work -->
<!-- It won't conflict with iText 5 as the packages are different -->
<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>2.1.7</version>
    <scope>runtime</scope>
</dependency>

问题是我不希望我们的开发人员能够从 iText 2.1.7(com.lowagie.* 包)导入类。我想强制他们使用 iText 5.5.2(com.itextpdf.* 包)中的类。

虽然 iText 2.1.7 处于“运行时”范围,但 Eclipse 仍然在构建路径中添加 jar 文件,从而允许开发人员导入错误的包(com.lowagie 而不是 com.itextpdf)。

有没有办法将其从构建路径中排除?

最佳答案

不幸的是,在正常构建的 Eclipse 上似乎不可能,这是一个已知的错误,请检查 Bug 414645Bug 376616 。 Eclipse (m2e) 无法正确管理 Maven 依赖项范围。

但是,如果您将运行时依赖项放在配置文件上,那么 Eclipse 不会将它们添加到类路径中(不过,配置文件默认情况下不应处于 Activity 状态)。我刚刚在 Eclipse Mars 上测试了它,它运行得很好。

因此,根据您的情况,您可以添加到 POM 中:

<profiles>
    <profile>
        <id>runtime</id>
        <dependencies>
            <dependency>
               <groupId>com.lowagie</groupId>
               <artifactId>itext</artifactId>
               <version>2.1.7</version>
               <scope>runtime</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

因此,它不能用于在 Eclipse 上编译。但是,您的构建需要在运行时使用它,在本例中使用 -Pruntime 运行。

虽然根据 IDE 问题调整 POM 和构建可能并不理想,但它可能是实现您的目标的一个很好的折衷方案。

关于java - Eclipse:从构建路径中排除 'runtime' maven 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34025345/

相关文章:

maven - 如何为 JavaFX 应用程序创建可执行的混淆 jar?

java - 创建返回子类对象的父类

java - 以下 JAVA 谓词的语法

linux - 如何在 Linux 中为 opencl 编程(安装英特尔 OpenCL SDK)准备 eclipse

eclipse - 禁用 .class 文件中的断点

java - Fabric8 maven 插件在运行构建时失败

java - Mockito 何时/然后不返回预期值

java - Restful Web 服务中的属性文件

eclipse - 如何在安装前验证升级

Android Gradle 构建失败 : Could not find com. google.android:support-v4:r18