Questions tagged «maven»

Maven是一个基于插件的软件项目管理工具,其核心功能是软件构建的自动化,依赖项管理以及报告和文档的生成。

6
在git存储库中的单个或多个项目之间进行选择?
在git我们已将大多数项目模块化的环境中,我们面临着每个存储库一个项目或每个存储库设计问题多个项目的问题。让我们考虑一个模块化项目: myProject/ +-- gui +-- core +-- api +-- implA +-- implB 今天,每个存储库有一个项目。它给了自由 release 个别组件 tag 个别组件 但这对于branch组件也很麻烦,因为分支通常api需要和中的等效分支core,并且可能还有其他组件。 鉴于我们希望使用release单个组件,我们仍然可以通过每个存储库设计利用多个项目来获得类似的灵活性。 有哪些经验?您如何/为什么解决这些问题?

1
拆分一个大项目以创建一个多模块Maven项目
我正在开发一个Spring-MVC应用程序,其中我们使用Maven进行依赖项管理。由于项目规模很大,我们正在考虑将项目分为几个部分。我有一些疑问,希望能在这里得到答案。 当前,我们正在ROOT.war服务器上的Apache tomcat上部署单个WAR文件。由于项目规模很大,因此Web应用程序中包括通知和电子邮件,第三方服务,PUSH(Cometd),REST API等组件。目前,它们都是相互依存的,相互依赖。例如,Notification对象也取决于Person对象,因为通知是为用户量身定制的。 拆分大项目的主要目的是能够在单个模块上工作,进行错误修复,添加功能,进行测试等。如果满意,则只能在服务器上替换此模块,而不是整个应用程序。这可能吗? 如前所述,对象之间存在依赖关系和映射。如何在不同的子模块之间进行管理,或者只是将import语句更改为包括其他项目? 如我所说,其目的是在单个模块上工作并能够部署它们(最好是热的)。目前,我们只有一个WAR文件,如ROOT.war。拆分会创建多个war文件,然后将其称为URL domain-name.com/module_name/some_mapping吗? 我目前正在检查文档,但这是我们要使用Maven提供的多模块要实现的主要目标,并且想知道这是否可行。如果需要更多信息,请告诉我。 目前,我正在使用Spring的父POM,如下所示: <parent> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>1.1.3.RELEASE</version> <relativePath /> </parent>

9
说服一个孤独的开发人员使用单独的构建工具,而不是IDE一键式构建
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 7年前。 在Java和Scala编程的多年中,我从未使用过Ant,Maven,Gradle或任何这些Java构建工具。在我工作过的所有地方,都有一个构建经理来负责所有这些工作-我将使用IDE在本地进行编译以进行开发和单元测试,然后检查源代码,并通知构建经理完成了必要的工作。为共享环境编译每个人的文件。 现在,我处于合同之间,我一直在从事我自己的自筹资金项目,现在正好可以实际赚钱。我什至有潜在的投资者在排队,并计划在未来几周内向他们展示Beta版本。 但是一直以来,我只是单击IDE上的build按钮,它会创建Jar文件,并且效果很好。当然,传统的观点建议我“应该”编写自己的Ant / Maven / Gradle脚本并使用它而不是IDE,但是在我的情况下(单独工作)它的具体优势是什么? 我已经阅读了一些有关如何使用这些构建工具的文章,看起来我将编写数百行XML(或Groovy或其他内容)以一键完成IDE的工作(IDE生成的该项目的Ant XML超过700行)。它看起来容易出错并且很耗时,对于我的情况来说是不必要的。更不用说学习曲线了,这将使我为使产品准备向人们展示而正在做的所有其他工作都浪费了时间。

1
Haskell构建和工件环境类似于Maven
我曾经是Java开发人员很长一段时间,但是最近我加入了Haskell团队。在Java世界中,如果您有一个大型项目,并且有多个团队在工作,那么一种常见的方法是使用工件服务器(例如Maven)来简化和加速开发。许多构建工具(例如Ant,Maven,Gradle)都可以构建项目并将jar文件上传到工件服务器,团队其他成员可以轻松使用。因此,通过将项目拆分为较小的子项目,还可以大大减少构建时间。 在Haskell方面,我们正在使用cabal该项目。我们的项目大约需要10-15分钟才能完成构建,而无需进行优化。如果打开编译器优化,则需要几个小时,这很痛苦。 我想知道,如何才能像在Java中一样做同样的事情。有没有一种简单的方法可以编译软件包(库)的二进制文件并将其上传到工件服务器,并在构建时使用预构建的二进制文件?我知道,因为Haskell生成机器代码(而不是Java中的字节码),所以可能存在兼容性问题,但是对于存储在工件服务器上的不同体系结构/操作系统,我们可能具有不同的二进制文件。

1
如何包括第三方Maven依赖项的许可证?
我正在为我的Java项目生成一个可分发的二进制文件。我以两种方式发布它: Maven中央 可在Google代码上分发的压缩文件 我的项目已获得Apache 2.0许可。我使用少数第三方,其中之一是MIT许可的。我认为有义务根据许可证中的以下文本,使我的项目用户了解许可证的内容: 以上版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。 我如何最好地在我的来源和可分发内容中引用此内容?我目前在想: 我的源文件不需要引用任何内容。它们只是包括我的Apache 2.0样板公告。 我在项目的根目录中添加了LICENSE.txt文件,其中包括Apache 2.0许可证文本。 对于我的压缩可分发文件,我还需要添加一些内容,以表明组件已获得MIT许可。也许是NOTICE文件? 对于我的Maven Central发行版,我不需要做任何事情,因为我的工件只是声明了它的依赖项,而实际上并没有包括它们。 这看起来像是有效的计划吗?如果是这样,任何人都可以建议如何完成第3点。

2
为Maven构建Git存储库的最佳方法
我需要一些有关如何在Git中构建项目的建议。我们使用Java,而Maven是我们的构建工具。Maven kinda假定您所有项目最终都有一个共同的祖先。当事情没有完全按照Apache基金会设置项目的方式进行设置时,Maven可能也是真正的戏剧女王(使用发行插件的任何人都可能知道我在说什么)。 我们想要一个用于控制插件版本和构建配置(仓库配置,要构建的工件,命名约定,插件版本等)的顶级父pom。Maven希望我们所有的IT项目都在该主项目的子文件夹中。这意味着该组织需要进行大量的Git回购。 这将导致非常嘈杂的环境。如果有两个团队从事不相关的项目,那么他们将不得不不断地从另一个团队引入合并。理想情况下,我希望每个项目有一个仓库。 但是,这种情况与Maven的极其分层的模型存在冲突,后者要求子项目是子文件夹。 我需要一些有关人们如何协调这两种模型的建议...谢谢!

1
Java应用程序结构:水平拆分与垂直拆分
对于大型Java应用程序的启动项目结构(使用Maven / Eclipse)有一些争论。 选项1: entities (i.e. the whole database using Hibernate classes-first) services (i.e. sets of read/write operations on the entities) app (perhaps split up more further down the line) 选项2: area1-entities area1-services area1-app area2-entities area2-services area2-app ... (where area1, area2 etc. are functional areas of the system) 选项2显然将导致产生更多的Maven项目/模块,这意味着将生成数据库的类分布在多个项目中。谁能建议每种方法的利弊?

5
Ant是否仍在Java构建的“主流”中?
我们一直在慢慢地用更全面的Ant构建(例如从CVS中获取,清理编译,jar,存档,电子邮件等)替换批处理命令文件(windows .bat),这些命令文件只是破坏了在开发人员IDE中编译的类。 我已经花了很多时间在Ant上学习(和调试问题),所以我最习惯将其用于这些任务。但是我不知道蚂蚁是否仍然像我刚开始学习时那样被广泛使用,还是“世界已经发展到”一种新的东西(也许更光滑了)。(例如,我开始看到分发了更多的Maven构建资料,例如,我从未使用过。) 这个问题的实际含义是,我是否要促使新开发人员学习Ant,还是应该为构建进行其他学习? 我从不总是掌握趋势,因此,很高兴听到其他Java开发人员的意见,他们认为这是最好的构建工具,以及他们认为新开发人员应该学习的知识。
14 java  training  maven  builds  ant 

2
我的小型软件库应该避免使用其他库吗?
我刚刚发布了一个小的Java库,其中仅提供了几个类和方法。自从我使用Maven构建项目以来,我立即使用了几个第三方库来实现我的目标,特别是: commons-lang3(用于一些通用的Java东西) slf4j-api(用于记录) commons-io(用于一小部分文件,我认为一次读取一个文件) 我不希望我的图书馆在别人眼中显得appear肿。我是否应该尝试摆脱对这些库的依赖以最大程度地减少占用空间?在将来考虑使用更多类型的库时,最好避免使用哪种类型的库?
13 java  libraries  maven 

5
使用Maven创建Java EE项目
我已经使用Eclipse开发Java EE Web应用程序大约一年了。我的雇主不使用Maven,但是我读的越多,我就越确信Maven + Hudson将对我们大有裨益。但是,首先,我必须在业余时间适应这些技术,以便创建概念验证。 现在,我仍然是Maven新手。有使用Maven创建Java EE Web应用程序的最佳实践吗?例如,我可以创建一个具有基本原型的项目,然后通过将依赖项放入Servlet容器,EJB,EclipseLink等的POM中来添加所有必需的JAR。方法。非常感谢您就此主题提供的任何指导。
13 java-ee  maven 

2
分离Java项目
我有一个大型的Java项目,我们在构建周期中使用了maven。这个项目被广泛使用-在其他项目中,在各种应用程序中,其中一些包含在其中,有些则在其他地方...老实说,这有点混乱(针对特定时间,在不同时间添加了不同的位目的),我想对其进行清理。另外,它还没有经过完全测试(没有适当的单元和集成测试就添加了很多位),并且有些测试需要很长时间才能运行或实际上没有通过……(嗯)测试在Maven构建周期中关闭(再次,呃,哦)。 我正在考虑将这个大型项目分成较小的特定项目,以使“最终”子项目(或几个子项目)可以选择所需的各个子项目。 我的想法如下: 如果我将一个大型项目分为多个子项目,这将清楚说明每个项目的责任。 通过分成多个子项目,我可以分别清理每个子项目的测试,然后在maven构建周期中打开该子项目的测试。 我有点担心这可能会对构建时间产生影响。 在大型项目上(即放入较小的子项目中)采用结构会减慢编译器的速度吗? 另外,我对这可能会对IDE中的编辑时间产生什么影响(我们主要使用Intellij)略有担忧。Intellij似乎是通过依赖关系树依次构建每个项目的-例如,如果C依赖于B依赖于A,而我更改了A,除非A进行编译,否则它不会尝试构建B。可以说这是有好处的,但是我发现,例如,如果我更改了A在B和C中广泛使用的接口,则需要花费一些时间来修复该更改中的所有错误... 另一个问题是如何使用工厂类。该项目的某些方面取决于外部罐子。有时(非常不经常)更新这些内容,因此我们必须进行迁移。我们倾向于使用Factory类来处理此问题,该类指向外部代码的正确版本(因此,我们不必在整个代码库中更改所有实现)。 目前,这一切都在大型项目中,但是我认为通过切换到子项目,我可以开发一个新项目来实施新的外部代码,确保子项目功能完整并经过测试,并且然后在用户项目中切换依赖项/工厂类。但是,由于在整个大型项目中大量使用接口,因此使情况变得更加复杂。例如 子项目A-包含接口 子项目B-取决于A的接口和旧的外部jar 子项目C-依赖于B(以及A和旧的外部jar),并且包含一个使用B的接口实现的Factory类。 如果需要更改B的外部jar,我可以: 创建子项目B_ii-再次取决于A,现在取决于新的外部jar 一旦功能完备,我可以将C的依赖项添加到B_ii,并更改Factory类以使用接口的新实现。 当这一切正常的时候,我就可以删除C对原始B的依赖关系,如果需要,可以删除子项目B。 这是明智的做法吗? 因此,总的来说,我的问题是: 有没有人有分解大型项目的经验?您是否愿意分享任何提示/技巧? 这对您的开发和构建时间有什么影响? 您可以在构建此类项目的分解方面提供什么建议?

2
git,maven和jenkins-版本,开发和发布构建工作流程
使用git,maven和jenkins进行以下操作的首选方式是: 我正在开发一个应用程序,我想维护它的“ dev”和“ release”分支。我希望詹金斯同时建立两者。发行工件可能具有1.5.2之类的版本,而dev-builds仅为0.0.1-SNAPSHOT。我不想有2个不同的pom.xml文件。 我查看了配置文件,但是它们似乎无法更改工件版本。我研究的一种方法可能是在测试版本中添加“限定符”。当然,我可以重命名该文件,因为关于此的真实工件信息并不重要,因为该应用程序是独立的。 这样做的首选方式是什么?还是您会怎么做?

1
IntelliJ与Maven编译
我有一个需要Hibernate jar的项目。 我将它们作为依赖项添加到pom.xml中,并且Maven可以很好地编译我的项目。 但是,在IDE中,所有对Hibernate API的注释和调用都标记为未解析(红色)。 我怎样才能使IntelliJ能够解决它们? 当我单击“生成项目”时,是否可以使用Maven?(Ctrl + F9) 另外,我对IntelliJ中的构面概念感到困惑。我是否需要它们,比如说JPA方面来启用Persistence Assistant等...,或者有一个选项可以让Maven照顾一下?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.