- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经处理 Maven 和 osgi 几个星期了,但仍然对依赖项和 bundle /包/插件感到困惑。主要是我无法理解它们是什么。因为我对 java 和 osgi/maven 都很陌生,所以我很难想象它们是如何连接的或者它们是对方的一部分。因此,不要太含糊,我会尝试提出一系列具体问题。
1)据我了解, bundle 和插件是相同的东西 - 只是名称不同。包也是一样的吗?我发现了很多关于“我应该使用 import-package 还是 require-bundle”主题的争论,但在我理解包或包是什么之前我无法真正理解它们。
2) 依赖关系。例如,如果我想使用 slf4j api,我添加此依赖项:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
但这到底意味着什么呢?我知道添加依赖项将使我可以使用 slf4j。我可以假设我所依赖的“东西”只是maven存储库中某处的一个编译项目(就像我在本地制作的项目)吗?
3) Osgi bundle 。如果我之前的想法是正确的(依赖项就像项目)那么 bundle 就像项目下的包吗?如果是这样,那么我假设一个依赖项可能会增加添加多个 osgi 插件的可能性。如果是这样,那么我在哪里可以看到哪些依赖项使哪些导入可用。我问这个是因为我注意到我在 import-package 下写的名称在依赖项中并不总是相同。
4) 在 eclipse 中启动 osgi 配置时,我必须选择插件。我可以从目标平台下选择一些插件,据我了解,我必须选择在 list 中导入的所有插件。这个目标平台是什么?这些插件是从哪里来的?
这些很长(而且可能是非常愚蠢的问题),所以我真的很感谢任何帮助。谢谢! :)
最佳答案
要记住的最重要的事情是 Maven 和 OSGi 具有完全不同的角色:
Maven 是一个构建工具。它负责编译您的代码(使用 javac 编译器)并将结果组装到磁盘上的 bundle (jar 文件)中......就是这样。 Maven 不会运行您的代码。
OSGi 是一个运行时模块化框架。它需要由 Maven 或任何其他构建系统构建的 bundle 文件,并创建一个供它们运行的框架。OSGi 不会告诉您如何构建 bundle ,但它确实对其内容施加了一些约束,这些约束必须无论您使用什么构建工具,都会感到满意。
现在回答您的具体问题:
“插件”是 Eclipse 中 bundle 的术语。出现这种情况是因为 Eclipse 在版本 3 之前使用了与 OSGi 不同的模块系统。现在它们是相同的东西。包不是同一件事,它是一个 Java 包,就像您放在 Java 源文件顶部的包声明中一样。通常,一个 bundle 将包含一个或多个包。
Maven pom.xml
中的依赖项意味着当 javac 编译器编译代码时,指定的 jar 文件将对它可见。请记住,Maven 是一个构建工具,因此这只指定构建时依赖项。这是必需的,因为如果您在 Java 源代码中使用符号(例如 org.slf4j.Logger),那么 javac 编译器必须在类路径上找到该符号。否则你的代码编译将会失败。
OSGi 包是构建过程的输出,以及运行时 OSGi 框架加载的物理模块。本质上, bundle 只是一个 jar 文件,其 META-INF/MANIFEST.MF
中包含一些特定于 OSGi 的条目。因为它是一个文件,所以您可以保存它、移动它、将其部署到应用程序中等。OSGi 加载该文件并创建一个封装包内容的运行时模块。整个应用程序通常由许多 bundle 组成。
要运行 OSGi 应用程序,您必须告诉 OSGi 要包含哪些 bundle 。从您选择的 bundle 组合中,就会出现一个应用程序。目标平台是一种已构建的 bundle 存储库,它包括您自己编写的 bundle 以及第三方 bundle ,例如像 slf4j 等库。目标平台的内容是使用 Eclipse 中的首选项对话框配置的。
关于java - 关于maven、osgi和eclipse的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21290739/
我想在文件系统上手动创建文件夹/文件,以便在 eclipse 的工作区中创建新项目,并在启动 eclipse 并选择工作区时显示在项目资源管理器中。 执行此操作需要创建哪些文件,它们需要位于何处? 请
我正在关注these instructions ,但在运行 mvn eclipse:eclipse 等命令时遇到问题。 我应该如何以及在哪里运行该命令? 我的设置: Windows 7 32 位 面向
是否有任何命令可以在不实际启动 eclipse 的情况下创建 eclipse 工作区?我希望该命令成为脚本的一部分。创建工作区后,将对其进行配置(例如文本编码),然后用于将项目导入到 RTC。我知道下
我想为 Eclipse 插件创建一个自动安装程序(即不通过“更新管理器”)。我的场景很简单:用户关闭 Eclipse,将下载的 JAR 放入 dropins 文件夹,启动 Eclipse,其余的过程是
每当我们想要使用现有源位置创建 Eclipse 项目时,我们将选择现有源位置(根)作为项目位置。 Eclipse 将在该源的根目录中创建所有项目特定文件。 现在,出于某种原因,如果我们想用不同的设置重
可能被问过多次; 有没有办法从控制台(Linux 或 Windows)刷新 Eclipse 工作区文件夹。 我知道有 Ant 任务可以做到这一点。但很想知道是否有命令行技巧。 最佳答案 不,您能做的最
我说的是工具栏上的小图标。 网络上似乎没有任何这样的问题,它们都指的是 android 或自定义应用程序,而不是与 eclipse 捆绑在一起的图标。 我想知道是否有人尝试过这个,或者可以告诉我它不值
如何使用 Eclipse 比较两个文件? (目前我正在使用 WinMerge 。) 最佳答案 要在 Eclipse 中比较两个文件,请首先在 Project Explorer/Package Expl
我正在尝试将我在一个带有数据库的 Eclipse JEE6 项目中所做的所有工作转移到另一个 Eclipse 程序。我知道我将不得不重新配置很多并重建很多库文件,但是尽可能多地传输的最简单方法是什么?
在 Eclipse 中加载我的工作台并启用 TFS 插件时,它挂起。与此类似: http://social.msdn.microsoft.com/Forums/vstudio/en-US/85c1d3
Eclipse 可以通过插件包含许多不同的功能集。您是否在一个 Eclipse 中安装所有插件?或者您是否从 spring 安装 STS,从 adobe 安装 Flex eclipse,甚至从 ecl
我错误地单击了“在 Eclipse 首选项中将目标运行标记为忽略在 Eclipse 构建中(实验)”: 在哪里/如何撤消此操作? 最佳答案 m2e 使用文件 YOUR_WORKSPACE/.metad
我是 Maven 新手。我尝试执行 >mvn eclipse:eclipse -Dwtpversion=2.0。但我收到以下错误: D:\test\CounterWebApp>mvn eclips
当我运行多个 Eclipse 实例时,操作系统不断请求上述权限。 我已经授予了该权限,并且我尝试了多次禁用和启用该权限。 我正在使用, macOS Catalina(版本:10.15.3 (19D76
我有一个 Maven 项目,其中我在项目构建期间使用 wsimport 作为目标来使用 Web 服务。 org.codehaus.mojo
当尝试使用 eclipse 新软件功能安装 eclipse 时,出现此错误: Cannot complete the install because one or more required item
我已经下载了整个 Eclipse Helios/Indigo 版本的源代码。现在我想对它进行一些修改等等。所以我导入了整个源代码,但现在我在编译时遇到了 n 个错误。此外,我正在尝试 RunAs> 插
我已经安装了 eclipse Oxygen 并且正在尝试连接到 Eclipse 市场,以安装插件,它给出了以下异常 - org.eclipse.equinox.p2.core.ProvisionExc
我的 IDE 中安装了来自 Sonatype 的 m2Eclipse 插件。它允许我通过右键单击 pom.xml 文件并导航到“运行方式”菜单来运行各种 Maven 命令(打包、安装等)。 但是,我还
我在 Windows7 64 位上运行 Maven 3 时遇到问题。当我执行maven eclipse:eclipse(我使用maven-eclipse-plugin 2.8)时,maven不会创建任
我是一名优秀的程序员,十分优秀!