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

执行将类路径设置为生成的项目JAR的Maven单元测试

韩寒
2023-03-14

换句话说,现在我的单元测试的类路径设置为:/$projectpath/target/classes/

相反,我希望将此类路径设置为:/$projectpath/target/myjarfile.jar

我曾尝试手动添加和删除依赖项类,如下所示:http://maven.apache.org/plugins/maven-surefire-plugin/examples/configuring-classpath.html,但到目前为止还不起作用。

<?xml version="1.0" encoding="UTF-8"?>
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.mygroupid</groupId>
  <artifactId>myartifact</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <dependencies>
      ...
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.1</version>
        <configuration>
        <source>1.7</source>
        <target>1.7</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.1.2</version> 
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.4</version>

        <configuration>
              <includeScope>runtime</includeScope>
              <outputDirectory>${project.build.directory}/lib</outputDirectory>
        </configuration>

        <executions>
          <execution> 
            <id>copy-dependencies</id>
            <phase>process-resources</phase>
            <!-- <phase>package</phase>  -->
            <goals>
              <goal>copy-dependencies</goal>
            </goals>

          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.3</version>
        <configuration>
              <classpathDependencyExcludes>
                <classpathDependencyExclude>
                  ${project.build.outputDirectory}
                </classpathDependencyExclude>
              </classpathDependencyExcludes>

              <additionalClasspathElements>
                <additionalClasspathElement>
              ${project.build.directory}/${project.build.finalName}.${project.packaging}
                </additionalClasspathElement>
              </additionalClasspathElements>
        </configuration>
      </plugin>

    </plugins>

  </build>
</project>

共有1个答案

缪坚诚
2023-03-14

作为测试生命周期阶段的一部分执行的标准单元测试看不到项目JAR,因为test阶段在package阶段之前执行,所以测试是在Maven生成JAR之前运行的。有关生命周期阶段及其顺序的列表,请参见此页。

您希望它将测试作为集成测试运行,集成测试在integration-test阶段执行。

有许多关于设置Maven以运行集成测试的教程。这里和这里有两个开始。failsafe插件通常用于执行集成测试。

 类似资料:
  • 我用eclipse创建了一个maven项目,并用下面的命令制作了jar文件 打包 当我尝试知道我的mvn项目配置是真的还是不是这个命令 mvn exec:Java-D exec . main class = " giraph . hello world . app " 我得到这个错误: 在helloworld项目上执行目标 org.codehaus.mojo: exec-maven-plugin:

  • 问题内容: 我有一个独立的Java项目。我已经执行了Maven全新安装。现在,我通过命令提示符进入target \ classes文件夹,并在classpath中设置所有必需的文件。现在我执行主类。结果正在显示。 现在,我通过命令提示符移回目标文件夹,并尝试执行jar文件(jar文件具有在其中定义了主类的清单文件)。 现在,我得到以下异常。我也从上面的语句中删除了classpath属性,但仍然遇到

  • 我正在将Apache FOP 1.0项目升级到Apache FOP 2.1。在这个项目中,所有必要的文件都打包在jar文件中。 我添加了新的FopFactoryBuilder以生成FopFactory 但是我所有的资源都是从文件系统上的相对路径加载的,而不是从 jar 加载的。如何将 baseURI 设置为 jar 的类路径? 谢谢。

  • 我试图将外部jar设置为hadoop类路径,但目前还没有成功。 我可以看到上面的HADOOP_CLASSPATH已经被hadoop接收 $hadoop类路径 /etc/hadoop/conf:/usr/lib/hadoop/lib/://usr/lib/hadoop/.//:/home/tom/workspace/libs/opencsv-2.3.jar://usr/lib/hadoop-hdfs

  • 为了在命令行上运行TestNG测试,我必须在类路径中设置TestNG。为了做到这一点,我经历了- 无法通过命令行执行TestNG套件文件

  • 但不走运,未设置自定义运行时类路径。