在Maven中为源文件和测试文件夹指定IntelliJ包前缀

时间:2013-09-05 05:55:18

标签: java scala maven intellij-idea

在IntelliJ中,您可以指定包前缀(例如,我通常将com.abc.project1指定为源文件夹src / main / java,src / main / scala,src / test / java等的根文件夹)项目结构>模块>源。

但如果我设置了“自动导入maven项目”,则会覆盖这些内容。

如何在pom文件中指定源包前缀?

2 个答案:

答案 0 :(得分:0)

Maven中的默认设置是在src/main/java文件夹中指定包,换句话说就是将源放入src/main/java/com/abc/project1。除此之外,包含诸如project1之类的东西的包名称听起来并不那么好。

答案 1 :(得分:0)

所以你想要实现这样的文件夹结构:

  • ROOT_FOLDER
    • pom.xml(agregate pom xml file)
    • COM
      • ABC
        • PROJECT1
          • pom.xml(您现有的项目)
          • SRC
              • 的java
                • 包1
除了现有的pom.xml

之外,还可以添加aggregate pom.xml来实现
  • 聚合pom.xml :此POM文件指定要构建的子项目(=模块)。

    • <modules>元素定义要构建的Maven子项目列表。在您的情况下,您需要指定<module>com/abc/project1</module>
    • 此外,其<packaging>元素必须设置为pom(而不是jar):<packaging>pom</packaging>
    • 将此文件放入root_folder
  • 每个子项目(=模块)的pom.xml。

    • 在您的情况下,pom.xml必须将其<groupId>元素设置为package1:<groupId>package1</groupId>
    • 将此文件放入 project1 文件夹。

在命令行中移至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>