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

Maven Alfresco SDK 入门第 2 部分

已在 Random-ZH 群组中发布

Alfresco Maven SDK 入门

杰夫·波茨,2014 年 1 月 <= 第 1 部分
  • 我们在 IDE 中处理您的项目
  • 了解项目结构
  • 创建适合共享访问的项目
  • 一般项目依赖项
  • 战争目标
  • 让我们试试这个:使用原型创建共享项目
  • 了解共享访问目录结构
  • 启动 Share 内部测试
  • 依赖管理
  • 其他独立研究课题
  • 哪里可以找到更多信息

我们在 IDE 中处理您的项目

这不是必需的,但许多人在设置 Alfresco 时更喜欢在 IDE 中工作。任何 IDE 都可以执行此操作,但最流行的 IDE 之一是 Eclipse,所以让我们看看它是如何工作的。
我正在使用面向 Web 开发人员的 Eclipse Java EE IDE 的 Kepler 版本。它带有内置的 Maven 支持。
要打开创建的项目,请执行以下操作:
  • 文件、导入、Maven、现有 Maven 项目。点击下一步。
    Maven Alfresco SDK 入门第 2 - 1 部分
  • 指定包含 someco-mvn-tutorial-repo 目录的目录。Eclipse 将检查此目录并在项目列表中显示您的项目。确保选中项目名称旁边的复选框,然后单击“下一步”。
    Maven Alfresco SDK 入门第 2 - 2 部分
  • Eclipse 将显示 Maven 插件面板设置。您现在可以安全地忽略它。单击“完成”。
    Maven Alfresco SDK 入门第 2 - 3 部分
该项目现在已导入到您的 Eclipse 工作区中。
在“标记”面板中,您可以看到 Maven 问题列表,其中显示“生命周期配置未涵盖插件执行”。
Maven 有插件问题 Maven 有插件问题(设置版本)
要修复:
  1. 右键单击错误并选择“快速修复”。
  2. 选择“在 Eclipse 构建中将 pom.xml 中的目标集版本永久标记为忽略”。准备好。
  3. 选择 POM 所在的位置(我的是 com.someco : someco-mvn-tutorial-repo : 1.0-SNAPSHOT),然后单击“确定”。
重建项目后,您可能会看到最新的问题之一“Project configuration is not up-to-date with pom.xml”。更正:
  1. 右键单击该项目并选择 Maven、更新项目。
  2. 确保选择该项目并单击“确定”。
现在 Eclipse 可能很高兴,唯一的错误应该是由于有关一些未使用的 Java 导入的警告所致。

了解项目结构

您的项目的目录结构更适合在 IDE 中探索。让我们看看这里有什么。
  • pom.xml在项目的根目录中,您可以看到 pom.xml。它告诉 Maven 需要了解的有关您的项目的所有信息。您还记得从模板创建项目时忘记的一些设置吗?您可以在此处更改设置。例如,原型的版本 1.1.1 允许您使用 Alfresco Community Edition 版本 4.2.e。如果您想使用不同的版本 - 只需更改一些属性并告诉 Maven 更新它们,它就会处理其余的事情。
  • src/main/java您应该在此处创建自己的包来组织 Java 代码。诸如自定义操作执行器类、自定义行为、Web 脚本的 Java 控制器之类的东西都在这里。如果您不知道这一切是什么,请不要担心,这里有教程。这些文件最终将被放置在 JAR 中。当 AMP 安装在 Alfresco WAR 中时,JAR 将位于WEB-INF/lib内。
  • src/test src/test 中的所有内容都与测试执行相关。单元测试本身位于src/test/java中。这些类所需的任何资源都将位于 src/test/resources 中。在src/test/properties/local中,您将看到一个alfresco-global.properties文件。如果您已经了解 Alfresco,您就会知道它用于配置 Alfresco 服务器。在这种情况下,这仅用于运行嵌入式服务器,用于测试目的。
  • src/main/amp其他所有内容都在项目的这一部分中。AMP 结构已有详细记录,我不想在这里重复它。我只指出要点:
    • module.properties文件告诉 Alfresco 它需要了解 AMP 的信息,例如其 ID、版本、运行 AMP 所需的 Alfresco 的最低和最高版本,以及具有相同依赖项的任何其他 AMP。
    • config/alfresco/module/someco-mvn-tutorial-repo目录是 AMP 的核心。您将放置 Spring XML 文件配置、XML 文件的内容模型和用户界面配置的位置。正如您稍后将看到的,我更喜欢为每个内容单独建立子目录。
    • 如果您的模块包含 Web 脚本或工作流程,它们不会包含在模块目录中。相反,它们位于config/alfresco/extension/templates/webscripts 和 config/alfresco/extension/workflows中。
    • 您的模块可能包含必须部署到 Web 应用程序根目录的客户端资源。它们位于src/main/amp/web中的 css、jsp、scripts 和 images 目录中。
您应该将整个项目检查到源代码管理中。您可能希望将版本控制客户端配置为忽略目标目录和 alf_data_dev 目录。
现在您了解了如何为存储库级别设置创建项目。我们来看看共享级别。作为本文的一部分,我将展示另一种无需离开 Eclipse 即可创建项目的选项。

创建适合共享访问的项目

首先,您必须了解在存储库级别创建的项目的结构与适用于共享访问层的项目的结构完全相同。在未来的 Alfresco Maven SDK 中,Share 项目有两点与众不同:项目的依赖项和将内置的 AMP WAR。

一般项目依赖项

我们先停下来谈谈依赖管理。目前,默认情况下,项目 pom.xml 中配置的原型使用 alfresco-repository 工件的依赖项。共享项目没有这种依赖性。事实上,许多共享项目根本不使用 Java。现在让我们编辑 pom.xml 并删除 alfresco-repository 依赖项。这将导致演示组件和关联的测试类在编译时生成错误。它们可以被移除。

战争目标

Share 项目的另一个区别是部署 AMP 的 WAR。这里您需要部署到 Share WAR,而不是 alfresco WAR。这是在 pom.xml 的 alfresco.client.war 属性中配置的。默认情况下,此设置为“alfresco”。对于共享项目,您需要将其替换为“共享”。

让我们试试这个:使用原型创建共享项目

让我们使用常规设置创建一个新项目。您可以转到命令行并运行与之前运行的相同的 archetype 命令,减去新的artifactId,然后将 alfresco.client.war 属性更改为“share”。如果您没有使用 Eclipse,请立即执行并跳过下一部分。
另一种选择是配置 Eclipse,以便您可以使用 Alfresco Maven SDK 创建新的 Alfresco 项目,而无需离开 IDE。让我们这样做吧。
  1. 文件,新建 Maven 项目。
  2. 选择包含“repo”项目目录的目录,单击“下一步”。
    Maven Alfresco SDK 入门第 2 - 4 部分
  3. 单击“配置”,我们可以将 Alfresco 目录添加到列表中。
    Maven Alfresco SDK 入门第 2 - 5 部分
  4. 单击添加远程目录
  5. 选择“https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml”作为目录文件。选择描述“露天原型”。然后,单击“确定”,然后在“首选项”面板附近再次单击“确定”。
    Maven Alfresco SDK 入门第 2 - 6 部分
  6. 现在在目录中选择“Alfresco Archetypes”,您将在列表中看到一堆原型。
  7. 选择“org.alfresco.maven.archetype”,与教程开始时相同的两个原型将出现在过滤器中。
  8. 选择 alfresco-amp-archetype 并单击下一步。
    Maven Alfresco SDK 入门第 2 - 7 部分
  9. 选择“com.someco”作为groupId,“someco-mvn-tutorial-share”作为artifactId,并将alfresco_target_amp_client_war更改为“share”。单击“完成”。
    Maven Alfresco SDK 入门第 2 - 8 部分
您的共享项目现在位于工作区中。下次使用原型创建新项目时,步骤会少一些,因为您不需要添加目录。

了解共享访问目录结构

正如我之前提到的,这个项目的结构与我们的 repo 项目完全相同。唯一的区别是,在 repo 项目中,诸如 Web 脚本之类的内容位于 src/main/amp/config/alfresco/extension/templates/webscripts 中。在 General 项目中,它们将位于 src/main/amp/config/alfresco 中/web-extension/site-webscripts。

启动 Share 内部测试

通常您会同时处理两个级别的设置。您的一般级别需要一个消息存储库。一种方法是告诉 Maven 使用以下命令启动您的存储库项目:
cd someco-mvn-教程-repo
mvn 集成测试 -Pamp-to-war
然后使用以下命令运行您的 Share 项目:
cd someco-mvn-教程-分享
mvn 集成测试-Pamp-to-war -Dmaven.tomcat.port=8081
两台服务器启动后,您可以打开 http://localhost:8081/share 并登录来测试您的模块。

依赖管理

Apache Maven 的一个很酷的地方是它可以为您管理项目的依赖项。您需要做的就是通过配置 pom.xml 告诉 Maven 有关它们的信息。默认情况下,Alfresco Maven SDK 会为您的项目创建两个依赖项:alfresco-repository 和 junit。
正如我之前所写,Alfresco Share 项目不依赖于 Alfresco 存储库,因此对于 someco-mvn-tutorial-share 项目,可以删除这些依赖项。但是,如果我想将一些 Java 内容放入我的 Share 项目中,例如基于 Java 的 Web 脚本,该怎么办?在这种情况下,我们需要添加依赖项。
Web 脚本可以在任何级别运行。如果您在 repo 项目中编写基于 Java 的 Web 脚本,则会构建该类,因为 alfresco-repository 工件的依赖项又依赖于 spring-webscripts 工件。如果您在 Eclipse 中的 pom.xml 文件中打开依赖关系层次结构,您可以看到这一点:
Eclipse 中的依赖关系层次结构
Eclipse 中的依赖层次结构 另一种选择。您可以通过运行以下命令来查看依赖关系层次结构:
mvn 依赖项:列表
因此,要将基于 Java 的 Web 脚本添加到 Share 项目中,我们需要添加 spring-webscripts 作为依赖项。您可以通过编辑 pom.xml 来做到这一点,如下所示:
<依赖关系>
    <groupId>org.springframework.extensions.surf</groupId>
    <artifactId>spring-webscripts</artifactId>
    <版本>1.2.0-M14</版本>
    <范围>提供</范围>
</依赖>
现在基于Java的Web脚本将能够找到它们的父类——DeclarativeWebScript。
您可能想知道如何知道 DeclarativeWebScript 类包含在 spring-webscripts 工件中。嗯,例如,通过访问http://artifacts.alfresco.com找到它。您可以按类别搜索,您将看到包含该类别的所有工件。

其他独立研究课题

您现在知道如何使用 Alfresco Maven SDK 创建项目并作为 Alfresco 存储库并配置 Alfresco Share。如果您是 Alfresco 开发的新手,我希望您会同意,组建一个项目来开始是非常容易的。如果您已经熟悉了 Alfresco 但仍在使用旧的 SDK,我希望这能激励您切换到新的 SDK 来创建 AMP。
本教程中未涵盖许多主题。我将把它们留给您自行探索。这里是其中的一些:
  • Alfresco Maven SDK 与名为JRebel的工具结合使用时支持动态类重新加载。
  • 本教程涵盖 AMP 原型。但 Alfresco Maven SDK 包含另一种原型,称为 All-in-One。这个原型为您提供了完整的露天安装,包括 SOLR。
  • 社区版和企业版均支持 Alfresco Maven SDK。如果您在访问企业版中的工件时需要帮助,请联系 Alfresco 支持。

哪里可以找到更多信息

<= 第 1 部分
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION