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

如何告诉Maven在Eclipse中包含jar依赖项,而不是子项目源目录?

丌官绍元
2023-03-14

我使用Apache Maven来管理我的Java库(jar)和一些使用这些库的项目。为了方便起见,我使用mvn Eclipse:Eclipse生成Eclipse项目文件,这些文件可以导入Eclipse工作区进行编辑。

当我在同一个Eclipse工作区中编辑主项目和Java库项目时会出现问题。也就是说,mvn eclipse:eclipse.classpath文件中包含了src路径依赖项,而不是预期的jar依赖项。

<!-- pom.xml for the main project -->
<dependency>
  <groupId>namespace.my</groupId>
  <artifactId>mylib</artifactId>
  <version>[1.0, )</version>
</dependency>

mvn compilemvn test工作完美,其中mylib.jar是从我的repo自动下载的。但是,当尝试mvn eclipse:eclipse时,我发现生成的.classpath文件没有像预期的那样包含mylib.jar依赖项。相反,它包含mylib的源文件目录,如下所示。

<!-- .classpath file generated by mvn eclipse:eclipse -->
<classpathentry kind="src" path="/mylib"/>

似乎Maven读取Eclipse的元数据,并发现mylib和主项目在同一个工作区中共存。因此,maven为了我的利益包含了源代码。该死的。我如何告诉maven忽略本地项目源代码,只包含jar文件呢?

共有1个答案

谷奕
2023-03-14

我相信这实际上是因为它们是Eclipse中的相关项目。因此,如果右键单击主项目并转到project references,则lib项目应该被勾选。

如果运行mvn eclipse:eclipse,它将自动为任何子项目(模块)添加项目引用。您可以使用maven eclipse插件的useProjectReferences属性来更改这一点。

它默认为true,但是

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.9</version>
            <configuration>
                <useProjectReferences>false</useProjectReferences>
            </configuration>
        </plugin>
    <plugins>
<build>

或作为命令行上的属性:

mvn eclipse:eclipse -Declipse.useProjectReferences=false
 类似资料:
  • 我们正在尝试使用java webstart开发一个打印应用程序。我们使用eclipse将jar创建为普通jar文件。我们的应用程序需要外部库来连接数据库、将数据转换为字节等。 我们以前可以通过将必要的JAR放入jre文件夹的/ext/目录来实现这一点。然而,这导致了与tomcat服务器的库冲突,所以我们希望避免这种方法。 我们还尝试将项目导出为可运行的jar,因为所需的库也已打包在jar中。但是当

  • 问题内容: 我有两个项目,并且属于该小组。取决于。 为了能够在不依赖外部服务的情况下开发应用程序的UI部分,在其中实现了虚拟DAO (它们返回静态数据,因此我们不必连接到数据库等)。 我们被要求将虚拟类移至。这意味着他们不会被部署到从Web项目构建的战争中。我在maven网站上找到了 这些说明 ,但它们似乎对我不起作用。 在中,我有: 在上运行时,在目标中,我会得到两个jar:和。它们都可以很好地

  • 我正在开发一个Java项目,使用maven作为依赖项管理器/构建工具。我当前在将依赖项的依赖项解析到正确版本时遇到问题。 有问题的依赖项称为JasperReports-Functions-6.1.0.jar,它不是托管在maven repo中,而是以jar形式提供的。 如何强制jar依赖项使用子依赖项的某个版本?

  • 在Eclipse中,我有两个项目: 大天使。core——一个Maven项目 ArchangelWEB-一个动态Web项目(为Tomcat构建)。 第一个,大天使。core拥有所有的基本代码,并使用Maven来解决依赖关系。第二个是核心项目之上的Web添加。这只有特定于演示/视图的代码。我想把它们分开,因为我将来可能会有其他项目依赖于核心,我不希望核心项目依赖于Web库。 现在,在大天使网的建造路径

  • 我试图通过从eclipse workspace项目导入现有maven项目来创建maven项目,但eclipse无法解决任何依赖项。每次创建项目、更新maven依赖项或清理项目时,依赖项会被下载,但它们不会从本地maven存储库中被引用。当我从命令行运行时生成构建 我已经筋疲力尽地尝试解决这个问题的所有修补程序了,比如启用索引、清理项目、Maven->update project 我的eclipse