设置 maven 有一个框架和使用它的其他项目

Setting maven to have a framework and other projects that use it

我创建了一个我应该用作框架的 Maven 项目。这个框架有一些依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>SeleniumJavaFramework</groupId>
    <artifactId>SeleniumJavaFramework</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>7</maven.compiler.source>
        <maven.compiler.target>7</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.0.0-alpha-6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.1.0</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>compile</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.aventstack/extentreports -->
        <dependency>
            <groupId>com.aventstack</groupId>
            <artifactId>extentreports</artifactId>
            <version>4.1.6</version>
            <scope>compile</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>
    </dependencies>
</project>

我想创建与框架项目分离的其他 Maven 项目,这些项目将拥有自己的 pom.xml 框架依赖项。 如果可能的话,他们应该继承框架项目的依赖。

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>RicercaGoogle</groupId>
    <artifactId>RicercaGoogle</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>TestOne</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>7</maven.compiler.source>
        <maven.compiler.target>7</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>SeleniumJavaFramework</groupId>
            <artifactId>SeleniumJavaFramework</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>system</scope>
            <systemPath>patofmyjar.jar</systemPath>
        </dependency>
    </dependencies>
</project>

不幸的是,我不知道从哪里开始进行 maven 设置。我什至不确定 pom 文件是否正确。我只知道我不能简单地将 jar 依赖项放入测试项目并 运行 它。你能帮帮我吗?

谢谢

如果您在单个项目中工作,您可以创建一个包含 TestOne 应用程序和框架作为两个模块的父 pom,因此您将拥有 3 个 pom(搜索 maven 多模块项目)。如果你的框架是不同项目的库,你需要一个存储库(即nexus),你的框架可以部署到那里。然后就可以在其他项目中作为依赖使用了(Framework的依赖会自动包含进来)

我建议按照 maven 官方指南学习继承在 maven 中的工作原理,并根据您的逻辑进行调整:

http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance

问题是我的 类 在错误的文件夹中。 他们在 src/test/java 而他们必须在 src/main/java。 同样在测试项目 pom 中,我按照 Andrew Fomin

的建议删除了 scope 和 systemPath
<dependency>
            <groupId>SeleniumJavaFramework</groupId>
            <artifactId>SeleniumJavaFramework</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

我有一个错误

Missing artifact SeleniumJavaFramework:SeleniumJavaFramework:jar:0.1.1-SNAPSHOT

因为如您所见,版本错误。

谢谢大家