管理本地 namce 项目名称与 Maven 项目之间发生冲突
managing local namce project name clashes with and between Maven projects
我发现 Maven 是项目工作的一个非常有用的范例,这可能主要是因为存储库的概念。我目前发现了一个减速带,在很大程度上从我的角度来看,同时这里有一个有效的观察,我希望你或同事能对这个困境有一些解决方案。
我的看法是,Maven 是一个项目级工具,可以让您 assemble 您的项目从其他项目作为构建块(Maven 工件)。我将给出一个简单的示例,说明我希望在项目中使用 Maven 实现的目标。我在引用
为了说明示例,请考虑所有内容都在同一组伞中:
- com.product
对于中等大小的应用程序,我可能有几个 sub-projects/modules,请考虑以下示例。对于开发,我想将项目组织为各种子项目。
app_one
|
+-- pom.xml
|
+-- gui
| |
| +-- pom.xml ....... <artefact>gui</artefact>
|
+-- datastore (DAL) ... <artefact>data</artefact>
| |
| +-- pom.xml
|
+-- domainentities .... <artefact>entities</artefact>
| |
: +-- pom.xml
:
我正在寻找一种分离后续(结构相似)应用程序的好方法,例如app_two。其他人如何组织项目以避免工件名称冲突。 <groupId>
和 '' 是唯一区分子模块的东西。 <version>
数字应该特定于“groupId:artefact”对
app_two
|
+-- pom.xml
|
+-- gui
| |
| +-- pom.xml ....... <artefact>gui</artefact>
|
+-- datastore (DAL) ... <artefact>data</artefact>
| |
| +-- pom.xml
|
+-- domainentities .... <artefact>entities</artefact>
| |
: +-- pom.xml
:
在两个示例应用程序 app_one 和 app_two 之间,现在有两个:
- com.product:gui
- com.product:数据
- com.product:实体
概念上完全不同且截然不同的人工制品。构建是本地项目,子项目是内部使用。
事情是避免人为的长名称,避免需要为常用项目节点发明名称(例如 GUI),其次,当事物根据通用方案命名时,它让我们有脚本和工具来执行一些常见的任务。
这是标准模式的东西吗?我不想重新发明已经运行良好的轮子。
第二件事;类似于:
- 数据
通常可以在不同的应用项目中重复使用。所以交易的第二部分可能是人们如何与 Maven 跨项目共享子组件?我们过去的尝试并没有很好地锻炼。
此时看来 Maven 非常适合构建应用程序构建块,例如 log4j 或 jdbc-驱动程序。在应用程序子模块级别上有什么好的做法?
可能相关的问题:
我觉得这些问题也涵盖了类似的领域,只是为了为手头的问题提供深度。目前还没有答案。
- share code between projects with maven
- How do to manage Dependencies between different maven projects, globally?
目前,我要补充一点,我们需要一个 Maven 解决方案 - Gradle 或者替代方案现在超出范围。
我会尽量回答你问题的 "share sub-products" 部分。
- 设置您自己的内部 Maven 存储库(假设您还没有)。我们使用 Nexus,这似乎足够了。
- 将公共代码从应用程序层次结构中移到具有适当名称的顶级项目(例如 ProductPojos)。给它一个合适的组名space(例如com.mycompany.product.common)
- 该项目的输出应该是一个 jar 文件,您可以将其发布到您的 Maven 存储库(像 Jenkins 这样的 CI 工具将使这变得容易)
- 每个需要 Pojos 的应用程序项目现在只需要一个 Maven 依赖声明,通常具有 compile 范围,以便 Pojo jar 将包含在应用程序输出工件中。
这种项目结构风格的优点是可以完全分离关注点。我们定期在多个项目中包含内部库代码。
祝你好运。
我发现 Maven 是项目工作的一个非常有用的范例,这可能主要是因为存储库的概念。我目前发现了一个减速带,在很大程度上从我的角度来看,同时这里有一个有效的观察,我希望你或同事能对这个困境有一些解决方案。
我的看法是,Maven 是一个项目级工具,可以让您 assemble 您的项目从其他项目作为构建块(Maven 工件)。我将给出一个简单的示例,说明我希望在项目中使用 Maven 实现的目标。我在引用
为了说明示例,请考虑所有内容都在同一组伞中:
- com.product
对于中等大小的应用程序,我可能有几个 sub-projects/modules,请考虑以下示例。对于开发,我想将项目组织为各种子项目。
app_one
|
+-- pom.xml
|
+-- gui
| |
| +-- pom.xml ....... <artefact>gui</artefact>
|
+-- datastore (DAL) ... <artefact>data</artefact>
| |
| +-- pom.xml
|
+-- domainentities .... <artefact>entities</artefact>
| |
: +-- pom.xml
:
我正在寻找一种分离后续(结构相似)应用程序的好方法,例如app_two。其他人如何组织项目以避免工件名称冲突。 <groupId>
和 '' 是唯一区分子模块的东西。 <version>
数字应该特定于“groupId:artefact”对
app_two
|
+-- pom.xml
|
+-- gui
| |
| +-- pom.xml ....... <artefact>gui</artefact>
|
+-- datastore (DAL) ... <artefact>data</artefact>
| |
| +-- pom.xml
|
+-- domainentities .... <artefact>entities</artefact>
| |
: +-- pom.xml
:
在两个示例应用程序 app_one 和 app_two 之间,现在有两个:
- com.product:gui
- com.product:数据
- com.product:实体
概念上完全不同且截然不同的人工制品。构建是本地项目,子项目是内部使用。
事情是避免人为的长名称,避免需要为常用项目节点发明名称(例如 GUI),其次,当事物根据通用方案命名时,它让我们有脚本和工具来执行一些常见的任务。
这是标准模式的东西吗?我不想重新发明已经运行良好的轮子。
第二件事;类似于:
- 数据
通常可以在不同的应用项目中重复使用。所以交易的第二部分可能是人们如何与 Maven 跨项目共享子组件?我们过去的尝试并没有很好地锻炼。
此时看来 Maven 非常适合构建应用程序构建块,例如 log4j 或 jdbc-驱动程序。在应用程序子模块级别上有什么好的做法?
可能相关的问题:
我觉得这些问题也涵盖了类似的领域,只是为了为手头的问题提供深度。目前还没有答案。
- share code between projects with maven
- How do to manage Dependencies between different maven projects, globally?
目前,我要补充一点,我们需要一个 Maven 解决方案 - Gradle 或者替代方案现在超出范围。
我会尽量回答你问题的 "share sub-products" 部分。
- 设置您自己的内部 Maven 存储库(假设您还没有)。我们使用 Nexus,这似乎足够了。
- 将公共代码从应用程序层次结构中移到具有适当名称的顶级项目(例如 ProductPojos)。给它一个合适的组名space(例如com.mycompany.product.common)
- 该项目的输出应该是一个 jar 文件,您可以将其发布到您的 Maven 存储库(像 Jenkins 这样的 CI 工具将使这变得容易)
- 每个需要 Pojos 的应用程序项目现在只需要一个 Maven 依赖声明,通常具有 compile 范围,以便 Pojo jar 将包含在应用程序输出工件中。
这种项目结构风格的优点是可以完全分离关注点。我们定期在多个项目中包含内部库代码。
祝你好运。