问题标签 [dependency-management]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven-2 - Maven:我应该保留还是删除声明的依赖关系,它们也是传递依赖关系?
您认为删除可以在 maven pom 中找到的所有传递依赖项是一个好习惯吗?
示例:
我的项目依赖于 A 和 B。B
也是 A 的传递依赖。
我应该将 B 保留在我的 pom 中还是删除它?
什么是最好的:
在 pom 上声明所有已知的罐子,甚至是传递的罐子,还是只保留顶级罐子?
这有点主观,但我正在尝试清理一些具有大量传递依赖项的巨大 pom(父子节点)。我想让我的 pom 尽可能简单,但我也希望它们是可维护的。
c++ - C++:自动减少编译时依赖的工具
在阅读了 pimpl 成语后,我吓坏了!
那里没有可以检查 .h/.cpp 文件并推断可以放弃哪些依赖项的工具吗?
dependencies - 如何将我的开源工件放入 Maven 存储库?
我最近为我的开源库http://jooq.sourceforge.net发布了第一个稳定版本。根据大众的需求,我想将我的工件放入一个 maven 存储库,但我不知道这究竟意味着什么。
我知道 maven 是一个依赖管理系统。我知道我必须为我的交付物创建描述性的 XML 文件。问题是
- 如何创建该 XML 文件(包含什么信息)?
- 我对 log4j 有(可选)依赖。我该如何指定?
- 我在哪里添加该 XML 文件(即在每个 .jar 文件中?在 .zip 文件中)
- 我可以在哪里上传我的工件?是否有任何公共存储库,我可以从我的项目网站中引用?
- 我将上传什么到该存储库?
logging - 我可以在我自己的库中创建对第三方库(如 log4j)的“轻量级”依赖吗?
我在http://jooq.sourceforge.net上维护一个用于数据库访问的库,我想使用 log4j 进行日志记录。但是日志记录确实是我图书馆的一个非常可选的部分。如果 log4j 在客户端代码中不可用,那么我不会进行日志记录。所以我创建了一个这样的记录器代理:
我的问题是:
- 这是一个好主意/一个好习惯吗?或者我应该创建一个对 log4j 的“硬”依赖?
- 使用上述解决方案,日志记录不会像我直接调用 log4j 方法那样精确。例如,日志文件中记录的行号或 .java 文件将始终是 JooqLogger 的,而不是调用者的。有没有办法规避这个问题?
maven-2 - 使用分类器更改工件的 Maven 依赖项
使用 maven jar 插件,我构建了两个 jar:bar-1.0.0.jar 和 bar-1.0.0-client.jar。
实际上,在我的 POM 中,我有以下依赖项:
这个工件也存在于两个版本 bar-1.0.0.jar 和 bar-1.0.0-client.jar
我想让 bar-1.0.0-client.jar 依赖于 foo-1.0.0-client.jar 和 bar-1.0.0.jar 依赖于 foo-1.0.0.jar。
=================
->第一个(错误的)解决方案:定义提供的范围并在使用 bar.jar 时使用正确的 foo 包
->第二个(长)解决方案:将“服务器”分类器添加到另一个罐子。使用不同的配置文件来构建 foo 工件并将分类器放在一个属性中。
================
关于配置文件解决方案。
接口模块 pom
实现模块 pom
此解决方案的问题是由于我的客户端接口缺少一些接口,并且 maven 在编译阶段抛出编译错误。
如果我使用 myapp-model 和其他项目,我不依赖于正确的 myapp-interface。
我想知道是否可以建造一个罐子并在里面放一个特定的 pom ?
build - 是否有适用于多种语言的类似 Maven 的工具?
我正在尝试找到像 Maven(标准化构建和打包、工件 repo 等)这样的工具,它支持的不仅仅是 Java(和 C/C++),特别是 Python 和 .NET(C#)。尤其需要良好的依赖性管理。
我们在我们的地方经营着一家混合的语言商店,目前本土的基于 python 的“über-buildsystem”应该会消失。请注意,它不会尝试进行详细的构建,只是处理模块/项目之间的依赖关系,下载编译的工件(在 C++ 案例中每个库几百兆)并在现有的 .sln/.vcproj 上调用 msbuild/easy_install/etc /etc 文件来完成真正的构建。
它可以工作,但主要是因为我构建了它并且知道它可以做什么和不能做什么,并且当我需要新东西时我会扩展它。这并没有真正帮助其他开发人员参与进来,而且我越来越觉得我们不应该专注于此。(尽管工作量不大,而且似乎也没有令人信服的替代方案。)
所以:
- Python 的 setuptools 似乎只适用于 Python(以及一些 c++ -> .pyd 编译)。
- Maven 主要用于 Java,还有一些 C/C++,主要用于 JNI。
- 对于 C/C++,没有……什么都没有?(用于构建的 qmake/cmake)
- 对于 .NET 有一些东西,但它们在 Visual Studio 和 MSFT 工具链之外工作得很好吗?
在 Ant(主要使用 Beanshell)之上构建另一个 Maven(但具有更灵活的支持)是我已经做过的事情。当前的 Python-stuff 是它的一个分支。
更新:
如上所述,Ant+Ivy 需要在上面构建相当多的东西,但它可能比我们现在拥有的基础更好,因为我们获得了更多的构建任务和开箱即用的工件 repo。(参见C++ 的 Maven Like 依赖管理)
热烈感谢所有帮助!
ivy - 为什么 Ivy 无法解析在我的 Web 浏览器中可见的 spring-test 依赖项?
我有一个 ivy.xml 可以成功解决它的所有依赖项,除了以下一个。
我的 ivysettings.xml 有以下解析器:
当我尝试解决依赖关系时,我收到以下错误消息:
但是,当我在浏览器中导航到该 URL 时,我可以看到 .pom 和 .jars。是什么阻止了 Ivy 解决这种依赖关系?
m2eclipse - 运行项目时缺少在工作区中打开项目的 m2eclipse 依赖项
我正在开发一个包含多个模块的应用程序。这些模块被定义为独立的 Maven 项目,并且彼此之间具有依赖关系。对于这个问题,让我们谈谈存在 project-a 和 project-b 并且 project-b 依赖于 project-a 的示例。这个依赖是在 project-b 的 pom 中定义的。
只要在Eclipse中只打开project-b,m2eclipse就会将project-a的JAR-file包含到类路径中,我可以通过按Ctrl + F11来运行project-b(或者在Eclipse的“运行”中选择“运行”-菜单)。
如果两个项目都在 Eclipse 中打开,则依赖关系将解析为 Eclipse 项目,不再解析为 JAR 文件,并且运行命令将失败,因为 m2eclipse 显然不将项目 a 的目标文件夹包含到类路径中。
有没有人提示我如何在 Eclipse 中打开两个项目并让 project-b 运行?
通卡。
maven-2 - 存在依赖冲突时如何破坏 Maven 构建?
我为一个项目运行 mvn dependency:tree 并看到如下输出:
这是一个糟糕的状态,因为我的项目直接依赖于 slf4j 1.6.0,而我们依赖的一些库依赖于 slf4j 1.6.1。这两个版本恰好是二进制兼容的,因此构建通过而没有任何警告。有没有办法让 Maven 对其依赖关系解析更加严格,以便我可以配置一个在这种情况下会失败的新构建?在这种情况下,解决方案是将我们的依赖项更新到较新版本的 slf4j。
c++ - C++ 的源代码依赖管理器
这里已经有一些关于依赖管理器的问题,但在我看来,它们主要是关于构建系统,而我正在寻找纯粹是为了使依赖跟踪和解决更简单的东西(而且我不一定有兴趣学习新的构建系统)。
所以,通常我们有一个项目和一些与另一个项目的通用代码。这个通用代码被组织成一个库,所以当我想为一个项目获取最新的代码版本时,我也应该从源代码管理中获取所有的库。为此,我需要一个依赖项列表。然后,为了构建项目,我也可以重用这个列表。
我看过 Maven 和 Ivy,但我不确定它们是否适合 C++,因为它们看起来非常面向 Java(即使可能有 C++ 插件,我还没有找到推荐它们的人) .
我认为它是一个 GUI 工具,可以生成一些标准化的依赖项列表,然后可以由不同的脚本等进行解析。如果它可以与源代码控制(标记、获取带有依赖项的标记版本等)集成,那就太好了,但这是可选的。
你有什么建议吗?也许我只是遗漏了一些东西,通常它是以其他方式完成的,不需要这样的工具?谢谢。