JavaRush /Java 博客 /Random-ZH /Maven Alfresco SDK 入门第 1 部分
CynepHy6
第 34 级
Великий Новгород

Maven Alfresco SDK 入门第 1 部分

已在 Random-ZH 群组中发布

Alfresco Maven SDK 入门

Jeff Potts,2014 年 1 月, 第 2 部分 =>
  • 介绍
  • 基本概念
  • 阿帕奇Maven
  • 露天模块化套件(AMP)
  • 露天 Maven SDK
  • 您对旧的基于 Ant 的 SDK 有何看法?
  • 你的第一个项目
  • 让我们启动它
  • 它以前如何?
  • 其他构建命令
  • 记录

介绍

本教程是为那些需要以某种方式在项目上配置 Alfresco 的人创建的。所以一开始你会想:“这是什么?!” 但最终你会学到:

  • 如何使用 Alfresco Maven SDK 从头开始​​创建 Alfresco 项目
  • 根据您的设置会发生什么
  • 如何创建和运行测试
  • 如何创建适合嵌入或与社区共享的工件

在您继续更详细地学习内容建模、自定义操作和行为、其他工作流程或 Web 脚本等内容之前,应将本教程视为一个起点。

在我们开始之前,先说一句题外话:解决方案几乎总是有许多替代路径。在本教程中我将带您以最简单直接的方式,一条安全的路线,帮助您更快地弄清楚。稍后您可以根据需要更改一些内容或探索其他路线。

基本概念。

在开始使用之前,您不需要了解太多有关 Maven、Alfresco 或为什么需要这个 SDK 的知识,但一些知识可以在某些方面提供帮助,所以让我快速带您了解基本概念。

阿帕奇Maven

Apache Maven 是一个构建管理工具。它有很多功能,但最主要的功能是它可以节省确定项目所依赖的依赖项(以及依赖项的依赖项)的时间。Maven 可以为您检索并缓存这些依赖项。如果您曾经花时间尝试找出哪个 JAR 文件在哪个 JAR 文件之后,那么这种工具的用处是显而易见的。

露天模块化套件(AMP)

AMP 是一个 ZIP 文件,其目录结构遵循一定的约定。AMP 文件用于在 Alfresco 平台上轻松共享和部署设置。如果您的项目需要在存储库级别(网络应用/露天)创建自定义设置,则您可以创建一个 AMP“存储库”。如果您的项目需要在共享级别(网络应用程序/共享)创建设置,您可以创建一个“共享”AMP。对于一个项目来说,当两个级别都需要更改时,您会创建两个 AMP,这是非常典型的情况。

露天 Maven SDK

今天的程序员已经习惯了强大的框架,其中一个空目录在一分钟内就被文件完全填满,下一刻您的项目就可以启动了。为什么露天开发商应该满足于更少的需求?

基于 Maven 的 SDK 的目标是为 Alfresco 的开发创造最简单的条件。该 SDK 由项目模板(Maven 术语中的“原型”)和一些内置功能组成,这些功能告诉 Maven 如何创建 AMP 并将其部署到 Alfresco。

如果您与 Alfresco 和 Share WAR 分开编写自己的应用程序,则不需要 Alfresco Maven SDK。但如果您要编写在任何这些 Web 应用程序中运行的代码,Alfresco Maven SDK 就是起点。

旧的基于 Ant 的 SDK 怎么样?

Alfresco 从一开始就提供了这个可下载的 SDK。SDK 包含一个 ZIP 容器,其中包含编译、源代码、文档和示例 Eclipse 项目所需的依赖项。这些示例使用基于 Ant 的构建器。

这种方法并没有什么问题,但是开发平台已经发展,而 Ant 的 SDK 却未能随之发展。截至目前,这些示例的部分内容已经过时(例如,本机 Web 服务 API 或 Alfresco Explorer 用户界面),并且对于极其重要的部分(例如 CMIS、Web 脚本和使用 Activiti 的高级工作流程)没有足够的示例。

除了过时的示例之外,还需要旧的 Ant SDK。开发人员做了太多的工作。使用 Alfresco Maven SDK,您甚至无需下载任何内容 - 您只需创建项目并开始编码即可。

您现在对 Apache Maven、AMP 和 Alfresco Maven SDK 有了较高的了解。是时候看看这一切的实际效果了

你的第一个项目

让我向您展示使用 Alfresco Maven SDK 开始进行 Alfresco 开发是多么容易。在开始之前,我必须提醒你已经安装了 JDK 1.7,以及 Apache Maven 3,你不需要下载任何其他东西。严重地。甚至露天。

  1. 创建一个空目录。我们很快就会在其中创建一些额外的目录。
  2. 现在让我们创建一个空项目。假设您想要创建一些将部署到 Alfresco 存储库的内容,例如自定义内容模型、多个自定义规则操作、一组新的 Web 脚本或某些 Activiti 业务流程。这真的没关系。要创建新项目,请运行命令:
    mvn 原型:生成\
    -DarchetypeCatalog=https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml\
    -Dfilter=org.alfresco.maven.archetype:
  3. Maven 会做一些工作并最终要求你选择“archetype”。您从项目模板库中的基本选择。这里有两个可用。一种称为“alfresco-amp-archetype”,另一种称为“alfresco-allinone-archetype”。我们的目标是创建一个可以部署在Alfresco的AMP,所以第一点就是我们所需要的。输入 1 并按 Enter 键。
  4. Maven 现在要求您提供项目所基于的模板的特定版本。目前,最新版本是 1.1.1,这是列表中的第五个选项,因此请按 5 并 Enter。
  5. Maven 询问 groupId。它类似于“Java 包”。我的示例始终基于我在一家虚构公司 SomeCo 工作的事实,因此我将在此处输入“com.someco”。输入您认为有意义的内容,然后按 Enter 键。
  6. 接下来是artifactId。将其视为您的项目的名称。这也将成为您的 AMP ID,因此请选择一些特殊的内容。您还应该将“-repo”行添加到您的artifactId,因为该模块将内置到存储库中。我将其命名为“someco-mvn-tutorial-repo”并按 Enter。

  7. 此时,Maven 将显示您输入的值,添加一些其他默认值,并要求您确认您的选择。如果您想更改任何内容,可以选择“N”然后进行更改,或选择“Y”继续。如果需要,您可以稍后更改这些值。按“Y”,然后输入。

Maven 现在将做一些工作。完成后您将得到以下信息:

  • 一个旨在支持您的 Alfresco 开发的项目
  • 默认配置文件
  • 用于额外单元测试的最少 Java 代码,以检查一切是否正常
  • 运行测试所需的本地 Alfresco 实例所需的配置
  • 默认 POM(项目对象模型)XML 文件,告诉 Maven 您的项目有哪些依赖项

让我们运行一下

您还没有上传任何内容。您还没有编辑任何内容。您所做的只是告诉 Maven 根据模板创建一个项目,但我有个好消息:您的项目现在就可以运行了。

尝试这个:

cd someco-mvn-教程-repo
mvn 集成测试 -Pamp-to-war

如果查看输出,您将看到 Maven 下载了编译项目、创建 AMP、将 AMP 部署到 Alfresco WAR、将 Alfresco WAR 部署到嵌入式 Tomcat 服务器并运行所需的所有内容。最终你会看到类似下面的内容:

2014-01-15 18:01:19,339 INFO [repo.module.ModuleServiceImpl] [localhost-startStop-1] 找到 1 个模块。
2014-01-15 18:01:19,480 信息 [repo.module.ModuleServiceImpl] [localhost-startStop-1] 安装模块“someco-mvn-tutorial-repo”版本 1.0.1401151758。

这意味着您的项目模块是由 Alfresco 服务器生成并识别的。

看到后:

Jan 16, 2014 8:38:20 AM org.apache.coyote.AbstractProtocol 启动信息:启动 ProtocolHandler ["http-bio-8080"]

您应该能够打开:

http://localhost:8080/alfresco

并使用“admin”和“admin”登录。

欣赏完后,返回到运行 Maven 命令的窗口,然后按 ctrl-c 关闭服务器。

如果您在运行集成测试时遇到内存不足错误,您可能需要在 Maven 中输入一些内存选项的 JVM 参数。一种可能的解决方案是设置 MAVEN_OPTS 环境变量。例如我将我的值设置为:

-Xmx1024M -XX:MaxPermSize=512m

使用 MAVEN_OPTS 将其设置得足够好,这样您就不会看到内存溢出错误。

它以前如何?

您已要求 Maven 运行“integration-test”以使用“amp-to-war”配置文件。这导致构建该项目,将其作为 AMP 部署到新的 Alfresco WAR,并运行嵌入式 Tomcat 服务器。之后,您可以登录到旧的 Alfresco Explorer 客户端并使用存储库,测试您的模块。

如果您查看目标目录,您将看到已创建并随后部署在 Alfresco WAR 中的 AMP。在我的例子中,它被称为“someco-mvn-tutorial-repo.amp”。如果您准备好将存储库级别更改应用到实时 Alfresco 服务器,则您应该向 IT 团队提供此文件。

其他构建命令

您可能并不总是需要启动 Alfresco 服务器并使其保持运行。如果您只想构建项目、运行单元测试并打包 AMP,您可以执行以下操作:

MVN包

如果您想在本地 Maven 存储库中安装 AMP,请运行:

MVN安装

您可能已经注意到,该项目默认包含一个简单的单元测试。默认情况下,Maven 将自动在您的项目中运行单元测试。您可以在控制台输出中看到这一点:

-------------------------------------------------- -----
 测试
-------------------------------------------------- -----
运行 org.alfresco.demoamp.test.DemoComponentTest

确保您的项目始终包含单元测试并在每次构建时运行它们是一个很好的做法。许多组织使用依赖于这些测试的 CI(持续集成)工具。如果由于某种原因你不想运行测试,你可以跳过它,如下所示:

mvn install -DskipTests=true

如果您想删除 Maven 创建的所有已编译内容并重新开始,您可以运行:

mvn 干净

如果您还想删除运行服务器测试时始终创建的内置数据库、保存的 Alfresco 内容、索引和日志,您可以运行:

mvn clean-清除

现在您知道如何使用模板创建新的 Alfresco 项目,并掌握了带测试或不带测试的构建基础知识。下一步是学习如何在 IDE 中处理您的项目。

记录

log4j.properties文件位于modules目录下,log4j.properties文件包括

log4j.logger.org.alfresco.demoamp.DemoComponent=${module.log.level}

您可能希望将其替换为适合您的包结构的您自己的设置。

要配置 module.log.level,您可以在启动 Maven 时执行此操作,如下所示:

mvn install -Dmodule.log.level=DEBUG

或者您可以编辑 pom.xml 并将其添加到属性中,如下所示:

<module.log.level>调试</module.log.level>

如果更改 pom.xml,那么 AMP 将在创建时接收这些设置,随后部署 AMP 的 WAR 将写入日志。这可能是(也可能不是)您想要的。如果您不确定,最好使用命令行设置值,因为这可以防止您意外弄乱 AMP 中的值。

企业内容管理架构师


本作品根据 Creative Commons Attribution-ShareAlike 3.0 Unported License获得许可。 第 2 部分 =>
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION