2

我有 3 个具有相同实体的 Java 项目。

我想在这些项目之间共享实体,因为实体可以在开发阶段演变。

我们正在考虑用实体构建一个 jar 并使用 Maven(带有存储库)共享它。

也许你有另一个解决方案?

4

5 回答 5

2

我也可以推荐使用 Maven 在项目之间共享代码。

以下是一些入门提示:

  • 使用 Maven 存储库管理器,例如 Nexus。它将帮助您创建一个稳定的开发环境。
  • 每个开发人员(也是持续集成服务器用户)都应该配置他们的设置文件以使用您的 Maven 存储库管理器。不要在 POM 中指定您的存储库,仅在您的 Maven 存储库管理器中配置它们。 http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html
  • 使用父 POM 的 dependencyManagement 和 pluginManagement 元素来指定您正在使用的插件和依赖项的所有版本。在其他 POM 中省略这些版本(它们将从父 POM 继承它们)。
  • 我还建议对多模块构建和父 POM 使用不同的 POM。
于 2012-03-23T15:49:59.100 回答
1

如果您想共享通用接口、类、功能或组件,Maven 是您的最佳选择。除了依赖管理之外,您还可以获得标准项目布局的额外好处,这将简化事情。与最常见的持续集成服务器和标准发布过程的轻松集成是进一步的好处。

一定要看看Maven!

于 2012-03-23T15:28:11.303 回答
1

制作自己的 JAR 库绝对是一个很好的解决方案。

  • jar 文件很容易通过依赖管理(maven、ivy、gradle ..)分发
  • jar 是版本化的
  • 使用该库的项目可以针对某个版本进行测试。否则,如果您更改实体并忘记更改依赖项目,则可能会出现问题。-> 集成测试

问候

于 2012-03-23T15:37:00.857 回答
0

实体是给定对象的表示我正确吗?如果是这样,Java 实现的默认机制是对象序列化 - http://en.wikipedia.org/wiki/Serialization。对于 jar 文件,如果实体发生更改,您每次也必须再次更改 jar。这可能很乏味。

于 2012-03-23T15:28:30.663 回答
0

在roo中生成一个标准的war文件。但是然后将它的包更改为jar文件。

然后从任何标准的战争文件中,您可以部署这个 jar(我将使用 jar 作为 maven 依赖项)。我将维护一个唯一命名的 applicationConext,例如 PizzaShop-applicationContext.xml 和 PizzaShop-applicationContext-jpa.xml。所以从一个父 spring 项目中,我可以以这种方式堆叠各种 roo 项目。

我还会保留他们生成的 webapps 文件夹,以便生成器更轻松地工作。(这意味着我必须打开 pom.xml 并不断将其改回 jar)。还有助于为非 roo 生成的战争文件 web.xml 条目添加剪切和粘贴素材。

似乎这可能是关于 roo 的一个令人困惑的点。您可以像任何春季项目一样混合和匹配这些罐子。它们的功能类似于独立的弹簧单元,并且在相同的 webapp/web.xml 上下文中与其他弹簧罐并排工作。

它很乏味,但仍然比手动编写 spring 代码更好。

于 2013-05-07T20:06:25.177 回答