如何组织我的maven项目

How to organise my maven project

我确信这已在其他地方得到解答,但我不确定我是否完全理解如何组织我的项目层次结构。

所以我有一个正在处理的项目,它包含许多我在其他各种项目中使用的实用程序。

让我们调用项目的主要部分MyProject.org.utils

在此之下,我对诸如此类的部分进行了逻辑分离 - 记录和 'custom exceptions' - 日历/时间功能 - 字符串函数。

我正在使用 eclipse 并在 MyProject.org.utils.

下创建了每个 'packages'

我希望能够为这个项目做两件事。

我希望能够为每个子部分发布一个 jar,所以一个 jar 包含用于日志记录的所有内容,另一个用于日历功能。

这意味着如果我不需要将它们导入另一个我不需要的项目(特别是我的日志记录,我在所有其他项目中都使用它,但我通常不使用日历的东西)。

我确信这可以在我的 Maven 中完成 pom.xml 但我不确定如何为此进行设置。

我读过有关 parent poms 的内容,但我不相信我了解如何让它在我的情况下工作,因为我的工作区中只有一个 pom.xml

我想将所有这些部分保存在我的 eclipse 工作区中的同一个项目中。

这是该项目的当前树设置,我认为这有助于更好地帮助解释我想要做什么(为简洁起见进行了修剪):

├── log4j2.xml
├── pom.xml
├── README.md
├── src
│   ├── main
│   │   ├── java
│   │   │   └── myproject
│   │   │       └── org
│   │   │           └── utils
│   │   │               ├── calendar
│   │   │               ├── logging
│   │   └── test
│   │       ├── java
│   │       │   └── myproject
│   │       │       └── org
│   │       │           └── utils
│   │       │               ├── calendar
│   │       │               ├── logging
│   │       └── resources
│   └── target
│       ├── classes
│
│...

所以基本上我想要一个罐子:
myproject.org.utils.calendar
myproject.org.utils.logging

但是如何修改我的 pom.XML 才能得到这个。

我想我需要有一个父 pom.xml,但是我要将我要创建的 2 个 jar 的子 pom.xml 文件放在哪里?

还是我用错了方法? 简短示例和教程链接等将是完美的,
预先感谢您的帮助。

大卫

一般来说,您应该为每个日历和日志记录内容创建 Maven 项目(又名 pom.xml)。 poms的包装应该有默认值jar。请注意,每个项目(日历和日志记录)都有一个单独的物理位置,并且没有一个公共的 src 文件夹,就像您的代码片段中那样。这不会影响包或 jar 的名称,您可以为它们使用通用前缀。

我建议为他们创建父 maven 项目,并将日历和日志项目作为模块包含到父 pom.xml 中。父pom包装应该是pom。父 pom 没有目标 - 因为 jars 是由模块生成的。 Parent pom 更容易管理依赖项、版本、插件等。

所有可以用eclipse轻松定义的(文件->新建->Maven->Maven项目等)

您可以在 git 上查看工作示例。可能值得阅读 maven 手册以获得背景知识。

对于可能会出现的其他人来说,这是更好的过程。 - 创建初始 maven 项目(使用 eclipse new -> maven 项目,或命令行)。 - 要创建子包,你应该 select new -> Maven module

这将导致文件结构如下

├── myproject.org.utils.calendar
│   ├── src
|   │   ├── main
|   │   └── test
│   └── target
├── src
│   ├── main
|   │   ├── main
|   |   │   └── java
|   |   |   │   └── myproject.org.utils.calendar_old

你会注意到如何在上面的树中将新创建的 maven 模块 (myproject.org.utils.calendar) 站点放在主项目的根目录中,而不是典型的 eclipse new->java->包裹位于 src\main\java.

这个新模块 (myproject.org.utils.calendar) 包含它自己的 pom.xml 并且外部 'parent' 项目现在将其作为其 [= 中的 <modules> 部分的一部分37=]