当前位置: 首页 > 知识库问答 >
问题:

Eclipse:从构建路径中排除“运行时”maven依赖项

法浩壤
2023-03-14

我有一个项目需要依赖于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.*包)中的类。

是否有方法将其从构建路径中排除?

共有1个答案

颛孙轩昂
2023-03-14

不幸的是,在普通构建的Eclipse上,这似乎是不可能的,这是一个已知的bug,请检查bug414645和bug376616。Eclipse(m2e)无法正确管理Maven依赖关系范围。

但是,如果您将运行时依赖项放置在配置文件上,那么Eclipse将不会将它们添加到类路径中(但是,配置文件在默认情况下不应该是活动的)。我刚刚在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>
 类似资料:
  • 问题内容: 我想利用Maven提供的功能来管理项目中的依赖项。我对Maven的工作方式的简要了解是,它将获取所需的JAR,然后使用这些库来构建项目。 目前,我已经设置了一个简单的POM文件作为测试: 为了管理依赖关系,我通常将项目或JAR添加到构建路径中,然后就可以构建我的项目了。 但是,当使用 M2Eclipse时 ,依赖关系不会自动添加到构建路径中。是否有任何配置可以让Eclipse知道Mav

  • 问题内容: 我有一个项目,该项目依赖于由供应商控制的工件。该工件包含一些我依赖的类,其中一些类较旧并且会引起问题。有没有办法让Maven自动扩展jar,删除类并将它们重新打包为依赖项?我会举一个例子。 所以- 我需要使用在项目网站,但我需要使用从神器。我无法修改Supplier:artifact或us:dependency。 有任何想法吗?! 问题答案: 从版本2.0.9开始,maven保留了类路

  • 我今天升级了我的Spring工具套件,从那以后我就一直坚持正确地构建项目。当我- 我已经探索了100个链接,但到目前为止没有运气。更新之前一切正常。 如何让Maven包含src/main/resources和src/test/resources? .classpath文件(默认情况下我希望生成的资源文件夹): .classpath文件,当我执行Maven时-

  • 当在我的gradle文件中添加依赖项作为实现时,它们在作为运行时配置的一部分列出时不会被包括在内。例如,当试图将它们放入pathing jar时,它们被排除在外,如下所示: 但是,当将这些作为编译依赖项移回时,这是有效的。现在的问题是在编译时,我的类路径要大得多。我的理解是,实现应该被视为直接使用者中的编译时和传递性的运行时,那么为什么它们被排除在配置之外呢?当将它们指定为“API”时,这也不起作

  • 是否有一种方法可以使用Gradle从一组中排除特定的jar?我尝试了下面的代码,但这删除了该组的所有jar

  • 我们有一个多模块maven项目,它最近由Ant Ivy转换而来。其中一个模块是一个遗留的自定义可插入组件,它在类路径上查找插件并加载它们。多模块项目中的另一个模块是由上述插件运行的插件实现。 当从eclipse运行配置运行自定义应用程序服务器时,我们必须在类路径上包含每个插件。当我们在eclipse工作区中构建时,这些插件并没有编译成jar。因此,没有要包含的jar工件。 如果我将插件模块项目作为