java - 如何使用 antrun 插件通过 maven 将类作为 jar 文件运行

标签 java class maven ant classpath

我的 maven pom.xml 中有以下插件配置

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
        <id>prepare-database</id>
        <phase>pre-integration-test</phase>
        <configuration>
            <target name="run">
                <java fork="false"  failonerror="yes" classname="Test">
                    <arg line="arg1 arg2"/>
                </java>
            </target>
        </configuration>
        <goals>
            <goal>run</goal>
        </goals>
        </execution>
    </executions>
</plugin>

该类位于 src/main/java 下的一个包中,该包名为 com.a.b,类文件名为 Test.java

package com.a.b;

public class Test {
    public static void main(String[] args)
      {
        String arg1 = args[0];
        String arg2 = args[1];
        doStuff(arg1, arg2);
      }

    public static void doStuff(String arg1, String arg2)
      {
          System.out.println(arg1);
      }
}

当尝试执行运行 ant 任务的 Maven 构建时,出现以下错误:

An Ant BuildException has occured: Could not find Test. Make sure you have it in your classpath

我知道找不到该文件,但我不知道该怎么办。任何帮助将不胜感激。

最佳答案

看看standard-directory-layout Maven 站点上的文章。

源文件夹应该是 src/main/java (而不是 src/java/main)

另外,您到底想用这个 ant 目标做什么?您只需要 fork 吗?为什么不能将它作为纯单元测试或 Maven 集成测试运行并忘记 ANT 目标?

H2 非常适合在内存中运行。只需几行即可连接到数据库并开始测试,所有这些都在 JVM 内,全部使用标准 jUnit 代码。

 Class.forName("org.h2.Driver"); 
 Connection con = DriverManager.getConnection("jdbc:h2:mem:mytest", "sa", ""); 
 Statement sst = con.createStatement(); 
 sst.executeUpdate(SQL); 

关于java - 如何使用 antrun 插件通过 maven 将类作为 jar 文件运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17343474/

相关文章:

java - 从多个 jar 中的单个 jar 加载类

java - 使用 java.util.Scanner 逐字节读取文件

java - Docker 容器化单体应用程序

python - 如何在Python中为类设置字符串渲染方法

python - 如何检测嵌套列表的哪些元素发生了变化? (Python)

maven - 使用 Maven 和 Spring Boot 忽略 JUnit5 测试

java - Jenkins 插件(使用 Maven 构建)和外部 jar

java - 如何在 Java 9 中使用类加载器访问资源

java - 从 SonarQube 接收有关设计和架构的反馈

c++ - 在另一个类方法中运行类方法