在 Apache Karaf 上安装
前言 复制链接链接已复制到粘贴板!
Red Hat Fuse 是一个轻量级、灵活的集成平台,能够在扩展的企业级环境或云中实现快速集成。
基于 Apache Camel,Fuse 采用基于模式的集成、丰富的连接器目录和广泛的数据转换功能,让用户能够集成任何变化。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看我们的 CTO Chris Wright 信息。
第 1 章 在 Apache Karaf 上安装 development 的 Fuse 复制链接链接已复制到粘贴板!
要开发在 Karaf 上运行的 Fuse 应用程序,请在本地安装 Fuse,如以下主题中所述:
1.1. 准备在 Apache Karaf 上安装 Fuse 复制链接链接已复制到粘贴板!
要准备在 Apache Karaf 上安装 Fuse,请检查您的系统以确保其满足硬件要求,它是一个受支持的平台,并且具有受支持的 Java 运行时。另外,确认您计划将支持的标准软件用于 Web 服务、API 和传输协议。
流程
在您要安装 Fuse 的系统中,确认它有:
- 250 MB 可用磁盘空间
- 2 GB RAM
此硬件要求是在 Apache Karaf 上安装 Fuse 的完整安装。此外,运行 Fuse 的系统需要空间用于缓存、持久消息存储和其他功能。实际要求取决于您的 Fuse 应用程序的作用。
- 确认您要安装 Fuse 的系统正在运行受支持的平台。红帽在 Red Hat Fuse 支持的配置 中列出的平台上测试并支持 Fuse 产品。
- 确认您的系统正在运行由 Apache Karaf 上的 Fuse 支持的 Java 运行时。请参阅 Red Hat Fuse 支持的配置 中的支持的 Java 版本。
-
确保您的 Java 运行时没有安装到包含空格的目录路径中。例如,
C:\Program Files\Java\jdk8不是一个可接受的路径。路径中的空格会导致在 Apache Karaf 上的 Fuse 中不可预测的错误。 - 检查 Red Hat Fuse 支持的标准 列表,以确认您使用的是支持的标准软件。
1.2. 在 Apache Karaf 上安装 Fuse 复制链接链接已复制到粘贴板!
可以从红帽客户门户网站下载 Karaf 上的 Fuse 7.11 的标准安装软件包。它将安装 Apache Karaf 的标准组件,并提供完整的 Fuse 技术堆栈。
可以创建您自己的 Fuse 7.11 的自定义子集,其中包含了 Fuse 功能和捆绑包的自定义子集。自定义 快速入门演示了如何使用 Maven 创建红帽 Fuse 的自定义装配。您可以从 Fuse Software Downloads 页面中的可下载文件安装所有快速入门信息。
前提条件
您计划安装 Fuse 的系统满足 第 1.1 节 “准备在 Apache Karaf 上安装 Fuse” 中描述的硬件和软件要求。
流程
在浏览器中,进入 Fuse Software Downloads 页面。
如果您尚未登录到红帽客户门户网站,则会出现一个提示登录,然后显示下载页面(您的帐户必须与红帽 Fuse 订阅关联)。
- 在 Fuse Software Downloads 页面中,在 Karaf Installer 上的 Red Hat Fuse 7.11 右侧,单击 Download 来获取本地 zip 文件。
将 zip 文件的内容提取到您拥有所有权限的目录中。
不要将 zip 文件解包到含有空格或任何其路径名称中的任何特殊字符的目录中:
#,%,^,".例如,不要解压缩C:\Documents 和 Settings\Greco#Roman\Desktop\fuse。如果使用 IBM JDK,请执行以下步骤:
在 Fuse 安装目录中,在
/lib/endorsed目录中删除saaj-api .jar文件,例如:rm lib/endorsed/org.apache.servicemix.specs.saaj-api-1.3-2.9.0.jar
rm lib/endorsed/org.apache.servicemix.specs.saaj-api-1.3-2.9.0.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
JAVA_OPTS环境变量,如下所示:JAVA_OPTS=-Xshareclasses:none
JAVA_OPTS=-Xshareclasses:noneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须在启动 Karaf 容器之前设置
JAVA_OPTS环境变量。
添加管理员用户,以启用在 Karaf 容器上对 Fuse 的远程访问和访问 Fuse 控制台。
默认情况下,没有为容器定义任何用户。在这种情况下,您可以在前台运行容器,但您无法远程访问容器,而且您无法在后台运行该容器。建议您按照以下步骤至少创建一个具有
admin角色的用户:-
在文本编辑器中,打开
etc/users.properties文件,该文件位于您的 Fuse 安装目录中。 找到以下行:
#admin = admin,_g_:admingroup #_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh
#admin = admin,_g_:admingroup #_g_\:admingroup = group,admin,manager,viewer,systembundles,sshCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 对于每行,删除前一个 # 字符以取消对该行的注释。
- 在第一行,将 admin 的首个实例更改为您选择的用户名,如 user1。
在同一行中,将 admin 的第二个实例更改为该用户的密码,如 passw0rd。
例如:
user1 = passw0rd,_g_:admingroup _g_\:admingroup = group,admin,manager,viewer,systembundles,ssh
user1 = passw0rd,_g_:admingroup _g_\:admingroup = group,admin,manager,viewer,systembundles,sshCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存并关闭该文件。
-
在文本编辑器中,打开
-
要启动 Fuse,请在 Windows 上运行
bin/fuse或bin\fuse.bat。 -
另外,若要访问 Fuse 控制台,请在网页浏览器中打开提供的 URL,并使用您在
etc/users.properties文件中设置的用户名和密码登录。有关使用 Fuse 控制台的更多信息,请参阅在 Karaf Standalone 上管理 Fuse。
1.3. 关于在 Karaf 上运行 Fuse 脱机 复制链接链接已复制到粘贴板!
您可以以离线模式运行 Apache Karaf 容器,即无互联网连接。但是,如果您计划将自定义应用程序部署到容器中,则可能需要将额外的依赖项下载到本地 Maven 存储库,然后才能使用这些应用程序以离线模式运行容器。
要以离线模式运行 Apache Karaf 容器,需要区分以下类型的依赖项:
- 运行时 依赖项是在默认配置中运行 Apache Karaf 容器所需的依赖项。
- 构建时 依赖项是构建自定义应用程序所需的依赖项,可能包含第三方库。
以下是离线模式下可以执行的操作以及需要在线模式(通过互联网连接)完成的内容:
-
在其默认配置中运行 Apache Karaf 容器支持离线模式。Apache Karaf 容器的默认配置由
etc/org.apache.karaf.features.cfg文件中的featuresBoot属性指定。安装的系统/子目录中提供了所需的依赖项。 -
通常情况下,安装额外功能 是离线模式下 不支持的。在原则上,您可以使用
features:install命令从标准功能存储库(由etc/org.apache.karaf.features.cfg文件中的featuresRepositories属性指定)安装任何功能,但大多数功能都必须从互联网下载,因此无法在离线模式下支持。 - 一般情况下,部署自定义应用程序 在离线模式下 不受支持。有些情况下,具有最小构建时依赖项集的应用程序会离线部署。但是,自定义应用程序通常具有需要互联网连接的第三方依赖项,以便 Apache Maven 可以下载 JAR 文件。
1.4. (可选)使用独立 Apache 发行版本 复制链接链接已复制到粘贴板!
Red Hat Fuse 提供了一个额外的软件包来下载,其中包含 Apache Camel 和 Apache CXF 的标准发行版本。如果要使用 Apache Camel 或 Apache CXF 的标准上游发行版本(没有 OSGi 容器)使用下载的附加软件包中的存档版本。
流程
- 登录红帽客户门户。
- 请访问红帽客户门户网站→下载 Red Hat Fuse→Downloads 页面。
-
在
Software Downloads页面上的Version下拉列表中,选择7.11.0。 下载 Red Hat Fuse 7.11.0 Extras 归档。
额外存档文件包含以下归档文件,嵌套在其中:
-
apache-camel-2.23.2.fuse-7_11_1-00015-redhat-00002.zip -
apache-cxf-3.3.6.fuse-7_11_1-00015-redhat-00002.zip
-
- 将这些文件复制到所需位置,并使用适合您的平台的实用程序解压缩。
不要将存档文件解压缩到其路径名称中具有空格的文件夹中。例如,不要解压缩 C:\Documents 和 Settings\Greco Roman\Desktop\fuse。
第 2 章 将 Hotfix Patch 应用到 Apache Karaf 上的 Fuse 复制链接链接已复制到粘贴板!
2.1. 修补功能和捆绑包 复制链接链接已复制到粘贴板!
补丁是 ZIP 存档,其中包含 Apache Karaf 安装中的 Fuse 中更新版本的文件。它们是:
- 捆绑包:这些是最常用的,在最简单的情况下,热修补代码补丁可能包含单个捆绑包。
-
$FUSE_HOME/etc和$FUSE_HOME/bin目录中分别存在的配置文件和脚本。 -
不是常规捆绑包的库,位于
$FUSE_HOME/lib目录中。 -
功能定义更改:一般在
$FUSE_HOME/system目录中包括 Normally Karaf 功能,但热修补代码补丁不会改变这些文件。相反,热修复补丁可能会更改功能覆盖文件,这些文件为$FUSE_HOME/etc/org.apache.karaf.features.xml。这可让您通过升级给定的功能捆绑甚至给定功能使用其他捆绑包来以热修补方式更改功能定义。
升级和热修复补丁之间的区别
- 热修补补丁:热修补补丁仅包含针对一个或多个关键错误修复。它们适用于您当前的 Red Hat Fuse 发行版。其主要目的是更新现有发行版中的一些捆绑和库。
- 升级:Apache 手册升级机制上的 Fuse 可让您将修复应用到 Apache Karaf 容器,而无需在 Karaf 上重新安装 Fuse 的更新版本。如果升级导致部署的应用程序出现问题,它也允许您回滚升级。Apache Karaf 升级过程的 Fuse 会更新任何文件,包括捆绑 JAR、配置文件和任何静态文件。
对于 Apache Karaf Standalone 上的 Fuse,您可以使用来自 Karaf 控制台的补丁 shell 来应用补丁。这个方法不可破坏性,且不可逆转。以下流程还可用于在 Apache Karaf 上升级红帽 Fuse。有关升级的更多信息,请参阅在 Apache Karaf 上升级 Fuse。
2.2. 将 Hotfix Patch 应用到 Apache Karaf 上的红帽 Fuse 复制链接链接已复制到粘贴板!
您可以使用热修复机制更新可用功能定义和捆绑包。将热修补代码修补程序应用到 Apache Karaf 安装中的 Fuse 中,如下所示:
流程
- 在升级前,在 Apache 手册安装中完整备份您的 Fuse。
打开终端,并在 Apache karaf 服务器上启动 Fuse。
[user@FUSE_HOME/bin ~] $ ./fuse
[user@FUSE_HOME/bin ~] $ ./fuseCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选:从客户门户网站下载所需的补丁并跳至第 5 步。
输入
patch:find命令以在 Maven 存储库中查找可用补丁。例如:karaf@root()> patch:find Found new remote patch at mvn:org.jboss.redhat-fuse/fuse-karaf-patch-repository/7.8.0.fuse-sb2-780040/zip You can add the patch using "patch:add mvn:org.jboss.redhat-fuse/fuse-karaf-patch-repository/7.8.0.fuse-sb2-780040/zip" command, or simply use "patch:find --add" option.
karaf@root()> patch:find Found new remote patch at mvn:org.jboss.redhat-fuse/fuse-karaf-patch-repository/7.8.0.fuse-sb2-780040/zip You can add the patch using "patch:add mvn:org.jboss.redhat-fuse/fuse-karaf-patch-repository/7.8.0.fuse-sb2-780040/zip" command, or simply use "patch:find --add" option.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以使用
patch:find命令和--add选项来查找最新的补丁,并将其添加到容器环境中。通过输入
patch:add命令,将补丁添加到容器环境。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意除了使用
patch:add命令外,您还可以通过将 .zip 补丁文件复制到FUSE_HOME/patches目录中自动添加补丁文件。可选:输入
patch:update命令来更新补丁机制本身:karaf@root()> patch:update Current patch mechanism version: 7.8.0.fuse-780038 New patch mechanism version detected: 7.8.0.fuse-780040 Uninstalling patch features in version 7.8.0.fuse-780038 Installing patch features in version 7.8.0.fuse-780040
karaf@root()> patch:update Current patch mechanism version: 7.8.0.fuse-780038 New patch mechanism version detected: 7.8.0.fuse-780040 Uninstalling patch features in version 7.8.0.fuse-780038 Installing patch features in version 7.8.0.fuse-780040Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入
patch:simulate命令模拟安装补丁。这会生成安装补丁时对容器所做的更改的日志,但不会对容器进行任何实际更改。查看模拟日志以了解这些更改。
输入
patch:list命令查看添加的补丁列表。在这个列表中,[name] 标题下的条目是补丁 ID。karaf@root()> patch:list [name] [installed] [rollup] [description] [CVEs] fuse-karaf-maintenance-patch-7.8.0.fuse-sb2-780040 false false fuse-karaf-maintenance-patch-7.8.0.fuse-sb2-780040 CVE-2020-28052
karaf@root()> patch:list [name] [installed] [rollup] [description] [CVEs] fuse-karaf-maintenance-patch-7.8.0.fuse-sb2-780040 false false fuse-karaf-maintenance-patch-7.8.0.fuse-sb2-780040 CVE-2020-28052Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果补丁包含显式 CVE 元数据,您可以输入
patch:show命令来查看更多详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入
patch:install命令并为您要应用的补丁指定补丁 ID,对容器应用补丁 ID。例如:patch:install fuse-karaf-maintenance-patch-7.8.0.fuse-sb2-780040
patch:install fuse-karaf-maintenance-patch-7.8.0.fuse-sb2-780040Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 回滚一个补丁 复制链接链接已复制到粘贴板!
您可以使用 patch:rollback 命令回滚安装的热修补补丁并将其恢复为预补丁行为,如下所示:
流程
-
输入
patch:list命令以获取最近安装的补丁的补丁 ID。 要回滚更新的捆绑包,请输入以下命令:
karaf@root()> patch:rollback my-patch-x INFO : org.jboss.fuse.modules.patch.patch-management (2): Rolling back non-rollup patch "my-patch-x" removing overriden feature: hawtio-rbac/2.0.0.fuse-000117 refreshing features Enter feature:info command to view the information about the feature.
karaf@root()> patch:rollback my-patch-x INFO : org.jboss.fuse.modules.patch.patch-management (2): Rolling back non-rollup patch "my-patch-x" removing overriden feature: hawtio-rbac/2.0.0.fuse-000117 refreshing features Enter feature:info command to view the information about the feature.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. 修补 Red Hat Fuse 应用程序 复制链接链接已复制到粘贴板!
使用新的 patch-maven-plugin 机制,您可以在 Red Hat Fuse 应用程序应用补丁。这种机制允许您更改由不同 Red Hat Fuse BOMS 提供的独立版本,例如 fuse-springboot-bom 和 fuse-karaf-bom。
2.4.1. 关于 patch-maven-plugin 复制链接链接已复制到粘贴板!
patch-maven-plugin 执行以下操作:
- 检索与当前红帽 Fuse BOM 相关的补丁元数据。
-
将版本更改应用到从 BOMs 导入的 &
lt;dependencyManagement>。
在 patch-maven-plugin 获取元数据后,它会遍历声明插件的项目的所有管理和直接依赖项,并使用 CVE/patch 元数据替换依赖关系版本(如果它们匹配)。替换了版本后,Maven 构建会通过标准的 Maven 项目阶段继续和发展。
2.4.2. 对 Red Hat Fuse 应用程序应用补丁 复制链接链接已复制到粘贴板!
patch-maven-plugin 的目的是,将 Red Hat Fuse BOM 中列出的依赖项版本更新至您要应用到应用程序的补丁元数据中指定的版本。
流程
以下流程解释了如何将补丁应用到您的应用程序。
将
patch-maven-plugin添加到项目的pom.xml文件中。patch-maven-plugin的版本必须与 Fuse BOM 的版本相同。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当您运行任何
mvn clean deploy或mvn dependency:tree命令时,插件会搜索项目模块,以检查是否使用其中一个 Red Hat Fuse BOM。只有 2 视为受支持的 BOM:-
org.jboss.redhat-fuse:fuse-karaf-bom: 用于 Fuse Karaf BOM -
org.jboss.redhat-fuse:fuse-springboot-bom: for Fuse Spring Boot BOM
-
如果没有找到上述 BOMs,则插件会显示以下信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果同时找到了 Fuse BOMs,则
patch-maven-plugin会停止并带有以下警告:Copy to Clipboard Copied! Toggle word wrap Toggle overflow patch-maven-plugin尝试获取以下 Maven 元数据值之一。-
对于 Fuse Karaf BOM 的项目,将解决
org.jboss.redhat-fuse/fuse-karaf-patch-metadata/maven-metadata.xml。这是带有org.jboss.redhat-fuse:fuse-karaf-patch-metadata:RELEASE协调的工件的元数据。 对于 Fuse Spring Boot BOM 项目的项目,则已解析
org.jboss.redhat-fuse/fuse-springboot-patch-metadata/maven-metadata.xml。这是带有org.jboss.redhat-fuse:fuse-springboot-patch-metadata:RELEASE协调的工件的元数据。Maven 生成的元数据示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
对于 Fuse Karaf BOM 的项目,将解决
-
patch-maven-plugin解析元数据以选择适用于当前项目的版本。这只适用于使用 Fuse BOM 版本 7.8.xxx 的 Maven 项目。只有与版本范围 7.8、7.7 或更高版本匹配的元数据才适用,且只会获取元数据的最新版本。 patch-maven-plugin收集在下载由groupId、artifactId和version标识的补丁元数据时使用的远程 Maven 存储库列表。这些 Maven 存储库是活跃配置集的 <repositories>元素中列出的它们,以及来自settings.xml文件的软件仓库。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果您想要使用离线存储库,您可以使用
-Dpatch选项指定由fuse-karaf/fuse-karaf-patch-repository生成的 ZIP 文件,或 fuse-springboot/fuse-springboot模块。这些 ZIP 文件具有与 Maven 存储库结构相同的内部结构。例如,/fuse-springboot-patch-repositoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 元数据是否来自远程存储库、本地存储库或 ZIP 文件,它由
patch-maven-plugin分析。获取的元数据包含 CVE 以及每个 CVE,我们都有受影响的 Maven 工件(由 glob 模式和版本范围指定)的列表以及包含给定 CVE 修复的版本。例如,Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最后,当迭代当前项目中所有管理的依赖关系时,会参考补丁元数据中指定的修复列表。这些与匹配的依赖项(及受管依赖关系)被更改为固定版本。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
跳过补丁
如果您不想将特定的补丁应用到项目,则 patch-maven-plugin 提供了一个 跳过 选项。假设您已经将 patch-maven-plugin 添加到项目的 pom.xml 文件,并且您不希望修改版本,您可以使用以下方法之一跳过补丁。
-
将 skip 选项添加到您的项目的
pom.xml文件中,如下所示:
-
或者在运行
mvn命令时使用-DskipPatch选项,如下所示:
如上方输出中所示,未调用 patch-maven-plugin,这会导致不会应用到应用的补丁。
第 3 章 本地设置 Maven 复制链接链接已复制到粘贴板!
典型的 Fuse 应用程序开发使用 Maven 来构建和管理项目。
以下主题描述了如何在本地设置 Maven:
3.1. 准备设置 Maven 复制链接链接已复制到粘贴板!
Maven 是一个来自 Apache 的免费开源构建工具。通常,您使用 Maven 来构建 Fuse 应用程序。
流程
- 从 Maven 下载 页面下载 Maven 的最新版本。
确定您的系统已连接到互联网。
构建项目时,默认行为是 Maven 搜索外部存储库并下载所需的工件。Maven 会查找可通过互联网访问的存储库。
您可以更改此行为,以便 Maven 只搜索本地网络上的存储库。也就是说,Maven 可以在离线模式下运行。在离线模式下,Maven 会在其本地存储库中查找工件。请参阅 第 3.3 节 “使用本地 Maven 软件仓库”。
3.2. 将红帽软件仓库添加到 Maven 复制链接链接已复制到粘贴板!
要访问 Red Hat Maven 存储库中的工件,您需要将这些存储库添加到 Maven 的 settings.xml 文件中。Maven 在用户主目录的 .m2 目录中查找 settings.xml 文件。如果没有用户指定的 settings.xml 文件,则 Maven 将使用 M2_HOME/conf/ 中的系统级 settings.xml 文件。
settings.xml
前提条件
您知道要在其中添加 Red Hat 软件仓库的 settings.xml 文件的位置。
流程
在 settings.xml 文件中,为红帽软件仓库添加存储库元素,如下例所示:
3.3. 使用本地 Maven 软件仓库 复制链接链接已复制到粘贴板!
如果您在没有互联网连接的情况下运行容器,且您需要部署一个具有离线依赖项的应用程序,您可以使用 Maven 依赖项插件将应用程序的依赖项下载到 Maven 离线存储库中。然后,您可以将此自定义的 Maven 离线存储库分发到没有互联网连接的机器。
流程
在包含
pom.xml文件的项目目录中,通过运行以下命令为 Maven 项目下载存储库,如下所示:mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.0:go-offline -Dmaven.repo.local=/tmp/my-project
mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.0:go-offline -Dmaven.repo.local=/tmp/my-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,构建项目所需的 Maven 依赖项和插件下载到
/tmp/my-project目录中。- 将此自定义的 Maven 脱机存储库分发给任何没有互联网连接的机器。
3.4. 使用环境变量或系统属性设置 Maven 镜像 复制链接链接已复制到粘贴板!
在运行应用程序时,您需要访问 Red Hat Maven 软件仓库中的工件。这些软件仓库添加到 Maven 的 settings.xml 文件中。Maven 检查以下 settings.xml 文件的位置:
- 查找指定的 url
-
如果没有找到查找
${user.home}/.m2/settings.xml -
如果没有找到查找
${maven.home}/conf/settings.xml -
如果没有找到查找
${M2_HOME}/conf/settings.xml -
如果没有找到位置,则创建空的
org.apache.maven.settings.Settings实例。
3.4.1. 关于 Maven 镜像 复制链接链接已复制到粘贴板!
Maven 使用一组远程存储库访问工件,它们目前在本地存储库中不可用。存储库列表几乎总是包含 Maven Central 软件仓库,但对于 Red Hat Fuse,它还包含 Maven 红帽软件仓库。在某些情况下,如果无法访问不同的远程存储库,也可以使用 Maven 镜像机制。镜像替代了特定的存储库 URL,因此当搜索远程工件到单个 URL 时,所有 HTTP 流量都会定向到单个 URL。
3.4.2. 在 settings.xml中添加 Maven mirror 复制链接链接已复制到粘贴板!
要设置 Maven 镜像,请将以下内容添加到 Maven 的 settings.xml 中:
<mirror>
<id>all</id>
<mirrorOf>*</mirrorOf>
<url>http://host:port/path</url>
</mirror>
<mirror>
<id>all</id>
<mirrorOf>*</mirrorOf>
<url>http://host:port/path</url>
</mirror>
如果在 settings.xml 文件中找不到上述部分,则不使用该镜像镜像。要在不提供 XML 配置的情况下指定全局镜像,您可以使用系统属性或环境变量。
3.4.3. 使用环境变量或系统属性设置 Maven 镜像 复制链接链接已复制到粘贴板!
要使用环境变量或系统属性设置 Maven 镜像,您可以添加:
-
为
bin/setenv文件调用 MAVEN_MIRROR_URL 的环境变量 -
名为 mavenMirrorUrl 的系统属性到
etc/system.properties文件
3.4.4. 使用 Maven 选项指定 Maven 镜像 url 复制链接链接已复制到粘贴板!
要使用备用的 Maven 镜像 url,除了由环境变量或系统属性指定的其他属性外,在运行应用程序时使用以下 maven 选项:
-DmavenMirrorUrl=mirrorId::mirrorUrl例如,
-DmavenMirrorUrl=my-mirror::http://mirror.net/repository-DmavenMirrorUrl=mirrorUrl例如,
-DmavenMirrorUrl=http://mirror.net/repository。在本例中,<mirror> 的 <id> 只是一个镜像。
3.5. 关于 Maven 工件和协调 复制链接链接已复制到粘贴板!
在 Maven 构建系统中,基本构建块是一个 工件。构建后,工件的输出通常是一个存档,如 JAR 或 WAR 文件。
Maven 的一个关键方面是能够定位工件并管理它们之间的依赖关系。Maven 协调 是标识特定工件位置的一组值。基本协调过程使用以下形式的三个值:
groupId:artifactId:version
有时,Maven 与一个 打包值或者一个打包 值和 分类器 值增加了基本的协调。Maven 协调可以具有以下格式之一:
groupId:artifactId:version groupId:artifactId:packaging:version groupId:artifactId:packaging:classifier:version
groupId:artifactId:version
groupId:artifactId:packaging:version
groupId:artifactId:packaging:classifier:version
以下是值的描述:
- groupdId
-
定义工件名称的范围。您通常使用软件包名称的所有或部分作为组群 ID。例如,
org.fusesource.example。 - artifactId
- 定义相对于组 ID 的工件名称。
- version
-
指定工件的版本。版本号最多可以有 4 个部分:
n.n.n.n,其中版本号的最后一部分可以包含非数字字符。例如,1.0-SNAPSHOT的最后一部分是字母数字子字符串0-SNAPSHOT。 - 打包
-
定义构建项目时生成的打包实体。对于 OSGi 项目,打包是
捆绑包。默认值为jar。 - 分类器
- 可让您区分从同一 POM 构建但具有不同内容的工件。
工件的 POM 文件中的元素定义工件的组 ID、构件 ID、打包和版本,如下所示:
要定义上述构件的依赖项,您要将以下 依赖项元素添加到 POM 文件中:
不需要在前面的依赖项中指定 捆绑 软件包类型,因为捆绑包只是特定类型的 JAR 文件,jar 是默认的 Maven 软件包类型。但是,如果您需要在依赖项中明确指定打包类型,您可以使用 type 元素。