Maven 构建配置文件的问题

问题描述 投票:0回答:1

我在一个 Maven 项目中工作,该项目用于运行 UI 和 API 测试。因此,POM 文件包含多个与 UI 自动化和 api 自动化相关的依赖项,并且难以管理。现在我们正在研究将项目模块化为可管理的组件,并且使用 Maven 配置文件是我们将继续采用的方法。

因此,我创建了两个配置文件作为 UI 和 API,并将所有与 ui 相关的依赖项放在 UI 配置文件下,将 API 相关的依赖项放在 API 配置文件下。常用的依赖项定义在根pom文件中的dependency标签下。

所以问题是 - 当我运行 'mvn clean install -P UI' 并运行 Maven 配置文件时,与 API 测试相关的测试类给出错误 -> 'package io.restassured.http 不存在'。 (放心相关的依赖在API配置文件里面)

是否可以像我在这里所做的那样模块化 POM 文件?或者我犯了什么错误?

<?xml version="1.0" encoding="UTF-8"?>

4.0.0

<groupId>org.example</groupId>
<artifactId>TestProfile</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
    </plugins>
</build>

<profiles>
    <profile>
        <id>UI</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>

        <dependencies>

            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>4.18.1</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
            <dependency>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.12.1</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
            <dependency>
                <groupId>io.github.bonigarcia</groupId>
                <artifactId>webdrivermanager</artifactId>
                <version>5.7.0</version>
            </dependency>

        </dependencies>
    </profile>

    <profile>
        <id>API</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>

            <!-- https://mvnrepository.com/artifact/io.rest-assured/rest-assured -->
            <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>rest-assured</artifactId>
                <version>5.4.0</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/org.json/json -->
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20240303</version>
            </dependency>

            <dependency>
                <groupId>com.googlecode.json-simple</groupId>
                <artifactId>json-simple</artifactId>
                <version>1.1.1</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest -->
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest</artifactId>
                <version>2.2</version>
                <scope>test</scope>
            </dependency>

        </dependencies>
    </profile>

</profiles>

<dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.9.0</version>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.12.1</version>
    </dependency>
</dependencies>

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
java maven
1个回答
0
投票

对于像我尝试过的那样尝试使用 Maven Profiles 模块化 Maven 项目的任何人,我们可以包含和排除相关/不相关的文件,以克服一次性编译整个项目的问题。 但正如评论部分所解释的,Maven 模块是更适合像我在问题中解释的用户案例的答案。但对于使用配置文件的任何人来说,包括带有包含/排除标签的示例配置文件

       <profile>
        <id>API</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.12.1</version>
                    <configuration>
                        <source>11</source>
                        <target>11</target>
                        <includes>
                            <include>**/RestAssuredMethods/RestMethods.java</include>
                        </includes>
                        <testExcludes>
                            <testExclude>**/PageObjects/DemoQA_textBox.java</testExclude>
                            <testExclude>**/UI_Tests/SampleTest1.java</testExclude>
                        </testExcludes>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19.1</version>
                    <configuration>
                        <testFailureIgnore>true</testFailureIgnore>
                    </configuration>
                </plugin>

            </plugins>
        </build>
        <dependencies>

            <!-- https://mvnrepository.com/artifact/io.rest-assured/rest-assured -->
            <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>rest-assured</artifactId>
                <version>5.4.0</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/org.json/json -->
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20240303</version>
            </dependency>

            <dependency>
                <groupId>com.googlecode.json-simple</groupId>
                <artifactId>json-simple</artifactId>
                <version>1.1.1</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest -->
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest</artifactId>
                <version>2.2</version>
                <scope>test</scope>
            </dependency>

        </dependencies>
    </profile>

</profiles>
© www.soinside.com 2019 - 2024. All rights reserved.