Java、IntelliJ、maven项目-导入问题

Java、IntelliJ、maven项目-导入问题,java,maven,intellij-idea,import,Java,Maven,Intellij Idea,Import,这可能是个愚蠢的问题,但我需要知道。如果它太傻而无法回答,我会删除它 在IntelliJ中的maven项目中,我有以下结构: procedure e2e cucumber (same level as common) src test java e2e support File: S

这可能是个愚蠢的问题,但我需要知道。如果它太傻而无法回答,我会删除它

在IntelliJ中的maven项目中,我有以下结构:

procedure
   e2e
      cucumber (same level as common)
         src
            test
               java
                  e2e
                     support
                        File: ScenarioState.java
                              package e2e.support

      common (same level as cucumber)
         src
            main
               java
                  common
                     testdata
                        File: Case.java
                              package common.testdata
是否有任何方法将包e2e.support(ScenarioState.java所在位置)导入到common.testdata包中的文件Case.java


我一直在玩弄maven导入、依赖项等,但我还没有找到一种方法。我可能需要重新设计一些类来绕过它,但这会影响项目的其他部分,如果可能的话,我希望避免这种情况。

如果您真的想这样做(我强烈建议您要么不去管项目,要么先重新构造它),请定义一个额外的源目录,如中所示


但是要小心,像这样的项目会一直困扰着你

可以在
common
的pom.xml中使用
测试jar对
cucumber
进行依赖

但是,这违反了最终产品的src/main和单元测试的src/test的概念(不包含在产品中,单独的测试类别)

(在src/test中可以有其他类,所以对于common来说,最简单的方法可能是使用一个src/test。)

如果ScenarioState与src/main无关,则可以将其放在src/main中更低级的库
cucumberbase
中。并在
cucumber
中使用
test
cucumberbase
建立依赖关系。在
中,对
黄瓜碱的正常依赖关系


保持主测试分离,否则其他开发人员会冒着疯狂的风险。

也许吧,但这看起来确实是个坏主意。您不应该将测试类导入到主类中。我原则上同意。然而,这个项目整体上是一个测试自动化项目。类的放置位置不一定反映“test”或“main”功能性。ScenarioState类是测试在每次测试运行期间用于存储状态的对象。如果整个项目用于测试自动化,则它应该在
src/main/java
中包含所有类。当然,除非您想测试测试自动化;-)。是的,这个组织可能会更好。然而,我并不是由我自己创造的,此时重组整个项目不在我的范围之内。