【发布时间】:2022-01-06 11:51:10
【问题描述】:
我的文件夹结构
| pom.xml
|
+---.idea
| .gitignore
| compiler.xml
| jarRepositories.xml
| misc.xml
| vcs.xml
| workspace.xml
|
+---mysource
| Main.java
| pom.xml
|
\---tests
MyTestClass.java
pom.xml
根pom.xml的内容:
<?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>org.example</groupId>
<artifactId>my-project</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>mysource</module>
<module>tests</module>
</modules>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
</project>
mysource/pom.xml的内容:
<?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>
<parent>
<groupId>org.example</groupId>
<artifactId>my-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>org.example</groupId>
<artifactId>my-project-mysource</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.34</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.34</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
tests/pom.xml的内容:
<?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>
<parent>
<groupId>org.example</groupId>
<artifactId>my-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>org.example</groupId>
<artifactId>my-project-tests</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
IntelliJ 为所有 java 文件显示“源根目录之外的 Java 文件”。我认为一个或多个 pom.xml 文件有问题。
注意:我想保持文件夹结构不变。
【问题讨论】:
-
单元测试属于您的生产代码所在的同一个模块...除了您想编写特殊的集成测试或者可能在 java 模块级别上进行测试...
-
另外我强烈建议在你的根 pom 中使用 dependencyManagement 而不是重复所有内容...
-
@khmarbaise 我可以在保持文件夹结构的同时这样做吗?
-
根据大纲结构,您的整个设置是错误的。源码属于
src/main/java/<packageName>/,单元测试属于src/test/java/<packageName>/XYZTest.java等。源代码不属于根目录。问题是为什么?你想改变约定的目的是什么? IDEA 也告诉过你要改变它……为什么? -
@khmarbaise 不管是什么原因,应该有办法做到这一点。 Per docs,“有一个普遍的误解,即 Maven 无法构建不符合某些目录结构或构建实践的项目。通常情况并非如此。但是,某些 Maven 功能或插件(尤其是第三方插件)可能无法运行或无法完全运行。” ---- 所以应该有办法,我就是想知道:)
标签: java maven intellij-idea intellij-15