【问题标题】:Maven project in Netbeans: How to add dependency to both 'Dependencies' and 'Test Dependencies'?Netbeans 中的 Maven 项目:如何将依赖项添加到“依赖项”和“测试依赖项”?
【发布时间】:2012-02-15 19:10:09
【问题描述】:

我在 Netbeans 7.1 IDE 中有一个 Maven 项目。

我想为 DependenciesTest Dependencies 添加相同的依赖项。

添加到一个从另一个删除它。

在 pom.xml 中复制依赖并包含在其中之一中:

<scope>test</scope>

..也不行。

救命!

更多详情:

假设我有项目 MyProjectMyDependency

MyProject 包含MyDependency 作为默认范围(即compile 范围)依赖项:

<dependencies>
          <dependency>
                    <groupId>my.group.id</groupId>
                    <artifactId>AnArtifactId</artifactId>
                    <version>1.0-SNAPSHOT</version>
          </dependency>
</dependencies>

MyProjectSource Packages 文件夹(即MyProject/src/main/...)中包含几个类,这些类引用MyDependency source 包中的类。这些工作完美; Netbeans 没有显示红色错误标志,并且这些类编译成功。

MyProjectTest Packages 文件夹(即MyProject/src/test/...)中包含几个类,这些类引用MyDependency test 包中的类。对于这些引用,Netbeans 在MyProject 中显示红色错误标志。

MyDependency 已使用mvn clean install -DskipTests 清理、构建并存储在本地 Maven 存储库中。对MyProject 运行相同的命令只会导致测试类中的错误;非测试类编译良好。

【问题讨论】:

    标签: maven scope dependencies netbeans-7.1


    【解决方案1】:

    我发现解决方案是复制 pom 依赖项,如下所示:

    <dependencies>
              <dependency>
                        <groupId>my.group.id</groupId>
                        <artifactId>AnArtifactId</artifactId>
                        <version>1.0-SNAPSHOT</version>
              </dependency>
              <dependency>
                        <groupId>my.group.id</groupId>
                        <artifactId>AnArtifactId</artifactId>
                        <version>1.0-SNAPSHOT</version>
                        <scope>test</scope>
                        <type>test-jar</type>
              </dependency>
    </dependencies>
    

    仅指定&lt;scope&gt;test&lt;/scope&gt; 表示包含MyDependency 源包的jar 应用作MyProject 测试包的依赖项。

    但是,通过指定&lt;type&gt;test-jar&lt;/type&gt;MyDependency 的测试 jar(即包含测试包的 jar)被用作MyProject 的测试包的依赖项。

    【讨论】:

      【解决方案2】:

      Dependencies 也自动成为 Test Dependencies,但反之则不然。

      【讨论】:

      • 谢谢,我也这么想。那么为什么我在Source Packages 中的类能够识别依赖,而Test Packages 中的那些却不能呢?这不仅仅是 Netbeans 的故障,尝试在 bash 中使用 mvn 构建对测试类不起作用:(可能是因为我已将测试使用的引用放入我的依赖项中的“测试包”中吗?即当依赖是默认的compile时,项目的测试包可以看到依赖的测试包吗?
      • 由于公司政策,我不能。但是,我已经在我的 OP 中添加了我认为有用的附加信息。任何进一步的建议将不胜感激。
      • 尊重公司政策的荣誉。不幸的是,查看 POM 文件仍然很重要。您可以尝试最小化和混淆它。
      • 从一个项目到另一个项目的唯一引用是在我在我的 OP 的“更多详细信息”中举例说明的位置,即在单个 &lt;dependency&gt; 标签内,该标签本身在 &lt;project&gt; 级别内&lt;dependencies&gt; 标签。不需要更多的 pom,但还是谢谢你。
      猜你喜欢
      • 2011-10-12
      • 2017-03-07
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      相关资源
      最近更新 更多