首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在积极开发JAR和依赖JAR时的开发实践?

在积极开发JAR和依赖JAR时的开发实践?
EN

Stack Overflow用户
提问于 2014-06-10 22:44:44
回答 1查看 94关注 0票数 2

是的,我知道,标题糟透了-这是我所能得到的描述性的。

当你有一个依赖的JAR (也在开发中),以及如何在本地构建以及使用CI (Jenkins)的时候,我试图让我的大脑了解开发JAR的概念。下面是设置:

假设我有一个Maven项目(Java代码),它创建了一个名为KillerApplicationSpaceship的漂亮的、自部署的JAR。这个项目依赖于许多第三方库(作为托管依赖项),以及我正在开发的几个JAR。叫他们KillerLibraryLister和KillerLibraryRimmer。他们有自己的Maven项目。我可以随心所欲地进入其中的任何一个,"mvn编译“,任何时候,我喜欢,生活是伟大的。

我在一台监视所有三个项目的GitHub存储库的机器上安装了Jenkins。每当推送代码更改时,就会触发生成。每当KillerApplicationSpaceship或KillerLibraryLister或KillerLibraryRimmer成功构建时,也会触发生成。在构建Maven存储库时,所有三个JAR都被推送到Maven存储库中,KillerApplicationSpaceship将这两个库指定为存储库中的托管依赖项。生活是美好的,除了对任何一个库进行更改,同时启动KillerApplicationSpaceship的构建,都不会对库进行更改!它们的版本号不会更改,因此始终使用库的缓存版本。

在我们所处的现代世界中,如何正确地在库上进行开发,并确保库的每个构建在构建时都被KillerApplicationSpaceship捕获?有没有一种方法可以说“总是从存储库中取回这个罐子,总是,总是这样?”

现在让我们再走一步。当然,我也可以在当地建造这些项目。我希望能够在我的本地机器上“managed”KillerApplicationSpaceship --但是POM指定这两个库是Maven存储库中的托管依赖项。正如我前面提到的,我的Jenkins盒将它们推送到成功构建的开发存储库,但是在开发过程中这是有问题的,原因有两个:

首先,如前所述,我似乎没有得到最新的版本,即使发生了更改,因为版本号没有改变。

第二,也是更重要的是,在进行开发时,我并不是用每一个小的更改都推进到GitHub,而是希望经常在本地编译和测试。本地的。

如何引用本地构建的KillerLibraryLister和KillerLibraryRimmer项目?如果我在KillerApplicationStarship中使它们非托管,那么我的Jenkins框也希望它们是非托管的--因为我们都在使用相同的POM。

在我看来,我希望本地机器上的本地构建引用两个库中每个库的最新本地构建,但如果构建在Jenkins框上,则在Maven存储库中引用最新版本,因为这是最后签入的版本。当然,我不知道我会怎么做。

这可能会受到更大的限制,因为库JAR由其他应用程序使用,例如,其中一个是使用SBT构建的(它是一个使用Scalatra的Scala应用程序)。因此,使用模块创建父POM并不是一种选择。SBT项目有一个build.scala文件,该文件指定远程Maven存储库上的库JAR文件。但是,我当然不想每次对这些JAR进行代码更改时都将它们推到存储库中(记住,它们也在积极开发中)。

在一本最受欢迎的书中,肯定有一个简单的章节:“从概念上说,是的,这一切都会分崩离析,是吗?我可能错过了这种发展中显而易见的”最佳实践“。

在过去的五、六年里,我一直在做web和单块的项目,所以这对我来说是一个范式的转变。我得到的密码。项目管理和构建实践让我需要一些赶超。

非常感谢任何成年人的监督!)

EN

回答 1

Stack Overflow用户

发布于 2014-06-10 22:49:31

你的问题有两种解决办法

  • 要么在单个maven项目树中创建所有项目并将其全部构建一次,这样就不可能出现不同步的情况。

如果你不能做上面的事

  • 针对发行版而不是快照进行开发,因此,例如,当您想要更改B的代码时,您的项目A使用B作为依赖项,生成一个发行版,并在项目A中添加依赖版本以获得特定的构建
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24152049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档