我有一个场景。我们正在为我们的应用程序开发 Selenium Page Factory 自动化框架。要求是框架项目应该独立于测试项目(子项目)(或父项目)。
一旦定义了框架,它就可以被任意数量的子项目重用。
即父级应包含与 BasePage、BaseTest、DriverManager、DriverFactory 相关的类以及 chromedriver、IEdriver 等资源
子项目应包含从框架扩展 BasePage 的应用程序特定页面,以及从框架扩展 BaseTest 的测试用例。
子项目应该是任意数字,例如 app1、app2
请使用示例 pom.xml 文件建议最佳的 Maven 项目架构。
父级
|_src/main/java
|_BasePage
|_BaseTest
|_ReadConfigOfChild
|_DriverFactory
|_src/main/resources
|_chromedriver.exe
|_IEDriverServer.exe
|_log4j2.xml
child
|_src/main/java
|_Page1 extends BasePage
|_Page2 extends BasePage
|_src/main/resources
|_config.properties (URL, username, password)
|_src/test/java
|_Tese1 extends BaseTest
|_Test2 extends BaseTest
|_pom.xml
|_TestNgSuite.xml
当添加新子项时,我们应该能够简单地扩展父项,而无需编辑父项 pom
|- child1
parent ----|- child2
|- child3
最佳答案
听起来你所说的parent应该被称为core,并且它不应该是父项目,而应该是其他项目的依赖项。
说明在 Maven 中,简单地说,你的父项目不是一个包含基类的项目,而只是一个没有源的项目,设置通用插件、依赖项和其他配置,由所有(子)项目(在你的聚合构建中)使用)。
编辑:MyProj/pom.xml // Aggregation/Reactor - has no parent, no sources, and (usually) no resources, but lists all modules (including parent) as modules
MyProj/modules/parent/pom.xml // has no parent (or for example sonatype, if you deploy with them), no sources, but eventually some resources, no modules
MyProj/modules/parent/src/main/resources/config/checkstyle.xml
MyProj/modules/core/pom.xml // has *parent* as parent, no modules
MyProj/modules/core/src/main/java/com/myDomain/myPkg/core/BasePage.java
MyProj/modules/core/src/main/resources/log4j2.xml
MyProj/modules/ui/pom.xml // has *parent* as parent and *core* as a dependency, no modules
MyProj/modules/core/src/main/java/com/myDomain/myPkg/ui/MyUiPage.java (extends BasePage)
MyProj/modules/service/pom.xml // has *parent* as parent and *core* as a dependency, no modules
MyProj/modules/core/src/main/java/com/myDomain/myPkg/service/MyServicePage.java (extends BasePage)
关于java - 父子项目maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31604242/