java - Maven - 将 "main"文件夹与 "tests"文件夹同步

标签 java unit-testing junit maven

我刚刚开始在我的项目中使用 Maven。我所有的生产代码当然都在 ma​​in 目录中。当我将单元测试添加到我的 tests 目录时,有没有办法将 main 目录与我的 tests 目录同步?

例如,假设我添加了一个新包 org.bio.mynewpackage。我必须进入我的 ma​​in 文件夹并添加相同的包名称...这很烦人。

有什么想法吗?

最佳答案

这是一个嵌入 GMaven plugin 中的 Groovy 脚本执行。它完全符合您的要求。

<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>1.3</version>
    <executions>
        <execution>
            <id>mirror-folder-structure</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>
                            <![CDATA[
static void createShadow(File base, File shadow){
    if(base.exists()&&!shadow.exists())shadow.mkdirs();
    base.eachDir { createShadow(it, new File(shadow, it.name))};
}
createShadow(pom.build.sourceDirectory,pom.build.testSourceDirectory);
                            ]]>
                </source>
            </configuration>
        </execution>
    </executions>
</plugin>

问题是:它不会自动运行。我已将它绑定(bind)到 generate-test-sources 阶段,但您可以选择任何其他阶段。但是,您必须手动执行该阶段,例如mvn 生成测试源

但是,如果您考虑将 Eclipse 与 m2eclipse 插件一起使用,m2eclipse 可让您定义在您保存文件时自动运行的生命周期阶段,这样会更容易。

关于java - Maven - 将 "main"文件夹与 "tests"文件夹同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4302132/

相关文章:

kotlin - 如何在Kotlin DSL上安装JUnit5?

java - 如何使 Ant junit 任务仅在测试失败时显示详细信息?

java - 要求用户切换到新包的最愉快方式(删除实际应用程序并安装新应用程序)

neo4j - 为什么 Neo4j 创建 Node[0]?

c# - 获取 NUnit 断言失败消息

java - Spring MockMvc - 从 REST 获取 java.time.Instant

java - 是否可以通过 JUNIT 测试属性注入(inject)的正确性?

java - 为什么 Spring @Autowired 注入(inject)另一个对象?

unit-testing - Grails单元测试应该失败奇怪的行为

javascript - puppeteer 在运行所有 Jest 测试之前关闭浏览器