在 IntelliJ 中,您可以在 ProjectStructure > Modules 中指定包前缀(例如,我通常将 com.abc.project1 指定为源文件夹 src/main/java、src/main/scala、src/test/java 等的根文件夹) > 来源。
但是,如果我设置了“自动导入 maven 项目”,这些将被覆盖。
如何在 pom 文件中指定源包前缀?
在 IntelliJ 中,您可以在 ProjectStructure > Modules 中指定包前缀(例如,我通常将 com.abc.project1 指定为源文件夹 src/main/java、src/main/scala、src/test/java 等的根文件夹) > 来源。
但是,如果我设置了“自动导入 maven 项目”,这些将被覆盖。
如何在 pom 文件中指定源包前缀?
Maven 中的默认设置是在文件夹中指定包,src/main/java
这意味着将源放入src/main/java/com/abc/project1
. 除此之外,包含project1
听起来不太好的东西的包名称。
所以你想实现这样的文件夹结构:
聚合 pom.xml:此 POM 文件指定要构建的子项目(= 模块)。
<modules>
元素定义了要构建的 Maven 子项目列表。在您的情况下,您需要指定<module>com/abc/project1</module>
<packaging>
元素必须设置为 pom(不是 jar):<packaging>pom</packaging>
每个单独的子项目 (=module) 的pom.xml 。
<groupId>
元素设置为 package1:<groupId>package1</groupId>
在命令行中移动到 root_folder 并调用$ mvn clean install
Jar 将在root_folder\com\abc\project1\target\
您可以通过导入聚合 pom.xml 在 IntellJ 中创建一个新项目。它不会覆盖文件夹结构(解决您的问题)。
聚合 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/maven-v4_0_0.xsd">
<groupId>foo.bar</groupId>
<artifactId>aggregate-artifact-example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modelVersion>4.0.0</modelVersion>
<name>Aggregate POM example</name>
<description>Aggregate POM example</description>
<modules>
<module>com/abc/project1</module>
</modules>
</project>
子项目(=模块) 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>package1</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>my-app archetype</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>