2

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

但是,如果我设置了“自动导入 maven 项目”,这些将被覆盖。

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

4

2 回答 2

0

Maven 中的默认设置是在文件夹中指定包,src/main/java这意味着将源放入src/main/java/com/abc/project1. 除此之外,包含project1听起来不太好的东西的包名称。

于 2013-09-05T06:16:28.693 回答
0

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

  • 根文件夹
    • pom.xml(聚合 pom xml 文件)
    • com
      • 美国广播公司
        • 项目1
          • pom.xml(您现有的项目)
          • 源代码
            • 主要的
              • 爪哇
                • 包1
这可以通过在现有 pom.xml 之外添加聚合 pom.xml来实现

  • 聚合 pom.xml:此 POM 文件指定要构建的子项目(= 模块)。

    • 它的 <modules>元素定义了要构建的 Maven 子项目列表。在您的情况下,您需要指定<module>com/abc/project1</module>
    • 此外,它的<packaging>元素必须设置为 pom(不是 jar):<packaging>pom</packaging>
    • 将此文件放入 root_folder
  • 每个单独的子项目 (=module) 的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 中创建一个新项目。它不会覆盖文件夹结构(解决您的问题)。

聚合 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>
于 2013-09-05T08:37:03.847 回答