来自个人依赖性存储/维护目的地的Java依赖性管理

时间:2016-06-11 20:00:12

标签: java gradle dependencies maven-assembly-plugin

我在这里看到了很多有趣(和重复)的问题,“在项目之间共享或使用类”。

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

  • 共享eclipse工作区
  • 可以作为另一个
  • 的依赖项的项目
  • 常用服务器,以便可以使用本地URL添加类路径

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

我正在考虑学习如何使用gradle(或者maven,我尚未完全致力于其中一个)。根据我的理解,可以使用这些专用依赖管理程序之一管理共享类。

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

我现在理解依赖关系管理的方式(在表面层面,我知道魔鬼在细节中)是对于已配置的依赖关系管理项目,gradle / maven将处理类路径添加和实际版本特定的比较从外部来源获取JARS,检索和存储(甚至可能编译,但我不知道这一点)。

我没有完成设置类路径到jar的步骤,而是必须保持最新并按照许多其他答案的建议编译自己,我正在考虑在服务器上创建一个虚拟项目,我可以放置泛型类,然后我可以指向许多单独的gradle / maven启用了java项目。 (我认为大多数人都可以将它们保留为独立的类,但我认为我可能需要将它们保存在一个虚拟项目中,以便在主类的上下文中进行开发和调试。我对java体系结构有点新意,所以如果唯一能让这个解决方案变得不可能的是指向一个“项目”,而不是一个“库”,我可以从那里进行调整。(假设我甚至适当地应用了“库”的概念。)

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

2 个答案:

答案 0 :(得分:1)

实际上,我并没有太多意识到对班级的依赖管理感觉太多了。通常,您可以将类捆绑在jar文件中,而jar文件又可以视为具有特定功能范围的单元。这样的jar适合于依赖管理。

如果您不熟悉此类工具,我建议您使用Maven。它广泛用于Java世界,并且很好地集成在通用IDE中。如果您坚持其惯例,它将负责从编译,测试到打包的整个构建过程。有许多可用的插件可以让您在简单的基于XML的配置中实际上自定义所有内容。您将在30分钟内运行您的第一个项目,并在30分钟内迁移您当前的项目。

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

答案 1 :(得分:1)

因此,您正在寻找可移植性,并且您不希望编译要在项目之间共享的Java类。你不介意本地部署。

我想到的第一件事是Git - 我不确定Gradle / Maven是否处理未编译的粗糙黑社会。 Composer将为php引入git repos,这让我思考。

如果您对项目之间单向共享代码感到满意,Git已submodules允许您这样做。

但是四处寻找,显然有一个git脚本更进一步 - Git Subtrees。我还发现了一个有趣的教程,允许您在处理共享它的任何特定项目时更改您更改的公共代码 - 所以显然要小心 - 但check it out并查看子树脚本是否适合您的需求。