在IntelliJ中,您可以指定包前缀(例如,我通常将com.abc.project1指定为源文件夹src / main / java,src / main / scala,src / test / java等的根文件夹)项目结构>模块>源。
但如果我设置了“自动导入maven项目”,则会覆盖这些内容。
如何在pom文件中指定源包前缀?
答案 0 :(得分:0)
Maven中的默认设置是在src/main/java
文件夹中指定包,换句话说就是将源放入src/main/java/com/abc/project1
。除此之外,包含诸如project1
之类的东西的包名称听起来并不那么好。
答案 1 :(得分:0)
所以你想要实现这样的文件夹结构:
之外,还可以添加aggregate pom.xml来实现
聚合pom.xml :此POM文件指定要构建的子项目(=模块)。
<modules>
元素定义要构建的Maven子项目列表。在您的情况下,您需要指定<module>com/abc/project1</module>
<packaging>
元素必须设置为pom(而不是jar):<packaging>pom</packaging>
每个子项目(=模块)的pom.xml。
<groupId>
元素设置为package1:<groupId>package1</groupId>
在命令行中移至root_folder并致电$ mvn clean install
Jar将在root_folder\com\abc\project1\target\
您可以通过导入聚合pom.xml在IntellJ中创建一个新项目。它不会ower写文件夹结构(解决你的问题)。
聚合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>