相关疑难解决方法(0)

多模块项目中的Maven测试依赖性

我使用maven来构建一个多模块项目.我的模块2依赖于编译范围的模块1 src和测试范围中的模块1测试.

第2单元 -

   <dependency>
       <groupId>blah</groupId>
       <artifactId>MODULE1</artifactId>
       <version>blah</version>
       <classifier>tests</classifier>
       <scope>test</scope>
   </dependency>
Run Code Online (Sandbox Code Playgroud)

这很好用.假设我的模块3依赖于Module1 src并在编译时进行测试.

第3单元 -

   <dependency>
       <groupId>blah</groupId>
       <artifactId>MODULE1</artifactId>
       <version>blah</version>
       <classifier>tests</classifier>
       <scope>compile</scope>
   </dependency>
Run Code Online (Sandbox Code Playgroud)

当我运行时mvn clean install,我的构建运行到模块3,在模块3处失败,因为它无法解析模块1测试依赖性.然后我mvn install单独对模块3进行操作,返回并mvn install在我的父pom上运行以使其构建.我怎样才能解决这个问题?

maven-2 maven-plugin

81
推荐指数
2
解决办法
5万
查看次数

为什么"mvn编译"需要"test-jar"依赖

test-jar在多模块项目中使用依赖项时遇到问题.例如,当我声明cleartk-syntax模块依赖于cleartk-token模块时test-jar(完整代码在这里):

<modelVersion>4.0.0</modelVersion>
<groupId>org.cleartk</groupId>
<artifactId>cleartk-syntax</artifactId>
<version>0.5.0-SNAPSHOT</version>
<name>cleartk-syntax</name>
...
<dependencies>
    ...
    <dependency>
        <groupId>org.cleartk</groupId>
        <artifactId>cleartk-token</artifactId>
        <version>0.7.0-SNAPSHOT</version>
        <type>test-jar</type>
        <scope>test</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

如果我mvn compile使用maven 2 运行,我会收到以下错误:

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) org.cleartk:cleartk-token:test-jar:tests:0.7.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

如果我使用maven 3我收到错误:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.654s
[INFO] Finished at: Mon Jan 24 21:19:17 CET 2011
[INFO] Final Memory: 16M/81M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute …
Run Code Online (Sandbox Code Playgroud)

java maven-2 maven-3

15
推荐指数
2
解决办法
1万
查看次数

Google App Engine 模块可以像 Maven 模块一样共享源代码吗?

我正在使用 Google App Engine 创建一个由多个Google Modules组成的项目。如何设置我的项目(使用 Maven),以便我可以跨模块共享源代码,例如 Objectify 对象模型定义、共享实用程序代码和单元测试代码?

我希望答案很简单,并且我可以按照以下答案中的建议使用 Maven:

但是,我担心 Google App Engine 模块可能有一些特殊之处,使它们与 Maven 模块不同。然后也许上面的方法行不通。

作为我担心的一个例子,请注意Google 说“虽然 Java EE 支持 WAR 文件,但模块配置仅使用解压的 WAR 目录。” 然而,上面给出的一些解决方案建议将共享代码打包到 JAR 文件中。我意识到 WAR 和 JAR 是不同的,但我担心我会浪费时间尝试做一些不能工作的事情。

关于如何在 Google App Engine 模块之间共享代码的任何建议?

java eclipse google-app-engine maven objectify

5
推荐指数
1
解决办法
1096
查看次数

与 Maven 共享 src/test 类,无需 test-jar 的版本规范

我在多个模块之间共享 src/测试类,其方式与附加测试指南以下问题中描述的方式类似。

所以,我有以下 pom.xml 依赖项:

       <dependency>
            <groupId>com.myco.app</groupId>
            <artifactId>foo</artifactId>
        </dependency>

        <dependency>
            <groupId>com.myco.app</groupId>
            <artifactId>foo</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

但是,与上面的问题相反,在附加测试 jar 时,我不想指定特定的测试 jar 版本。如编译级别依赖项所示:

   <dependency>
      <groupId>com.myco.app</groupId>
      <artifactId>foo</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我的 pom.xml 会出现错误,并显示有关缺少版本的消息。为什么会出现这种情况呢?为什么我可以指定没有版本的依赖项,但不能指定 test-jar 依赖项?有没有办法克服这个问题并使测试 jar 使用它能找到的最新 jar?

java maven-3 maven

4
推荐指数
1
解决办法
2920
查看次数