我有一个项目测试,其中包含在其他项目的JUnit测试中使用的所有类(例如构建器测试)。在项目测试的pom.xml中,我添加了Mockito和Junit。
<?xml version="1.0" encoding="UTF-8"?>
<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>br.com.company</groupId>
<artifactId>project-test</artifactId>
<version>1.0-SNAPSHOT</version>
<repositories>
<repository>
<id>central</id>
<name>Maven Central</name>
<url>http://repo1.maven.org/maven2/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
请注意,许多项目需要使用项目测试来导入JUnit和Mockito依赖项。 Foo项目有一个带项目测试依赖的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.company</groupId>
<artifactId>foo</artifactId>
<packaging>war</packaging>
<name>foo</name>
<version>1.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<!-- <defaultGoal>install</defaultGoal> -->
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
<version>3.5.1</version>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<!-- Nexus config -->
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>br.com.company</groupId>
<artifactId>project-test</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
它需要导入一些包,如:
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
我在 /home/danielamorais/.m2/repository/br/com/company/project-test/1.0-SNAPSHOT 中执行了 mvn clean install 和.jar存在。为什么我无法在我的Foo项目中导入Junit和Mockito?
错误:(8,17)java:package org.junit不存在
答案 0 :(得分:0)
这些是测试范围依赖项,仅在运行测试时适用。
我希望你通过执行UPDATE entities SET config = JSON_INSERT(COALESCE(config, '{}'),
COALESCE("$.features", "features"), JSON_OBJECT("utilities",
JSON_OBJECT("water", TRUE, "gas", TRUE, "electric", TRUE)))
WHERE id = 123725082;
来测试它。
ex mvn test
答案 1 :(得分:0)
与 JB Nizet 和 Nrj 一样,这是范围的问题。检查Maven documentation on the subject。
我只是想补充一点,而不是创建一个全新的项目来分组您的公共依赖项,一个更简单和常见的做法是创建一个父POM ,然后您的其他POM可以继承它。详细了解here,有一对examples。
答案 2 :(得分:0)
当工件声明为依赖另一个工件时,具有test
范围的依赖关系不会在声明工件中继承。
如果您想要为多个工件定义公共依赖项(以及相同的通用配置),请使用以下设计的功能:父pom。
定义一个包含公共配置的父pom,并使你的两个工件成为它的一些子模块
如果需要,您还可以将父pom设为聚合器/多模块pom。
家长pom
<?xml version="1.0" encoding="UTF-8"?>
<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>br.com.company</groupId>
<artifactId>foo-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<repositories>
<repository>
<id>central</id>
<name>Maven Central</name>
<url>http://repo1.maven.org/maven2/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
项目测试(jar)
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>br.com.company</groupId>
<artifactId>foo-parent</artifactId>
<version>1.0</version>
</parent>
<artifactId>project-test</artifactId>
</project>
foo(战争应用)
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>br.com.company</groupId>
<artifactId>foo-parent</artifactId>
<version>1.0</version>
</parent>
<packaging>war</packaging>
<artifactId>foo</artifactId>
</project>