Java 来自个人依赖的依赖管理 storage/maintenance 目的地

Java dependancy management from a personal dependancy storage/maintenance destination

我在这里看到许多关于 "sharing or using classes between projects" 的有趣(和重复)问题。

我认为这很实用,但我所阅读的建议解决方案肯定假设了某些先决条件,例如:

虽然可能是可接受的解决方案,但我正在寻找一种可能具有更大灵活性和可移植性的替代方案。

我正在考虑学习如何使用 gradle(或者也许是 maven,我还没有完全致力于其中一个)。据我了解,可以使用这些专用的依赖管理程序之一来管理共享 classes。

理论上这可能吗?我可以设置一个 gradle 或支持 Maven 的 java 项目来处理和保持本地服务器上的个人 classes 或便携式驱动器或云镜像上的文件夹吗?

我目前理解依赖管理的方式(在表面上,我知道细节决定成败)是,对于一个已配置的依赖管理启用项目,gradle/maven 将处理 class路径添加和来自外部源的 JARS 的实际版本特定比较、检索和存储(甚至可能编译,但我不知道这一点)。

我没有按照许多其他答案中的建议进行设置 classjar 路径的步骤,而是考虑在服务器上创建一个我可以放置的虚拟项目通用 classes,然后我可以指出许多单独的 gradle/maven 启用 java 项目来使用。 (我认为大多数人能够将它们作为独立的 class 保留,但我认为我可能需要将它们保留在一个虚拟项目中,以便在主 class 的上下文中进行开发和调试。我对 java 架构有些陌生,所以如果唯一使这个解决方案不可能的事情是指向 "project" 而不是 "library" 我绝对可以从那里调整。(假设我是甚至适当地应用“库”的概念。)

其他信息: 我希望这可以简化个人依赖性,同时使用 Netbeans 和 eclipse IDE 并跨平台工作(但 Linux 和 Windows 是我计划测试的)

实际上,我认为 "class level" 上的依赖管理没有太大意义。通常,您会将 类 捆绑在一个 jar 文件中,而该文件又可以被视为具有特定功能范围的单元。这样的jar适合放在依赖管理中。

如果您不熟悉这些工具,我推荐 Maven。它在 Java 世界中广泛使用,并很好地集成在常见的 IDE 中。如果你坚持它的约定,它会照顾你从编译、测试到打包的整个构建过程。有很多可用的插件可以让您在基于 XML 的简单配置中自定义几乎所有内容。您将在 30 分钟内完成第一个项目 运行,再过 30 分钟即可完成当前项目的迁移。

要与他人共享您的代码,您仍然需要一个可以将 Maven 构建的工件上传到的存储库。根据您的喜好,有多种可能性。将其推送到 Amazon S3、Maven Central 或在您的专用网络中安装您自己的 Sonatype Nexus

所以您正在寻找可移植性,并且不想编译要在项目之间共享的 java class。而且您不介意本地部署。

我首先想到的是 Git - 我不确定 Gradle/Maven 是否处理未编译的坚韧地下世界。 Composer 将为 php 引入 git 回购协议,这让我开始思考。

如果您对项目之间的单向代码共享感到满意,Git 有 submodules 可以让您做到这一点。

但四处搜索,显然有一个 git 脚本更进一步 - Git Subtrees. I also found an intriguing tutorial that will allow you to make changes to common code that you change while working on any particular project that shares it - so obviously be careful - but check it out 看看 Subtrees 脚本是否适合您的需要。