小编Chr*_*utz的帖子

创建多模块maven构建并独立发布单个模块?

我目前正致力于优化多模块maven项目的maven构建.该项目由大约90个Maven模块组成.通常,有一些交叉的库构成了核心,然后大约有15个"应用程序模块"组成了整个应用程序(然后在WAR中部署)

现在一般情况下整个项目都有一个主要版本"2.5",因此当一个新的主要版本完成时,所有"应用程序模块"都具有相同的版本"2.5.0".到现在为止还挺好.

如果模块有需要修复或需要改进的错误,则应该发布该"应用程序模块"的新版本.因此,例如模块A修复了一个错误,然后A.jar应该是版本"2.5.1",而其余应该仍然是"2.5.0".

父(2.5.0-SNAPSHOT - 模块A(2.5.1-SNAPSHOT) - 模块B(2.5.0-SNAPSHOT) - 模块C(2.5.2-SNAPSHOT) - 战争(2.5.3-SNAPSHOT)< - 3最后,因为C有两个重新发布和一个,并且为了简单起见,在每个模块发布后发布.

我们决定在主pom中管理工件版本,因此我们不需要在释放一个模块后更新每个工件的依赖版本.

所以现在每当更新的"应用程序模块"准备就绪时,我们使用maven发布插件来执行该模块的发布(我们正在发布一个模块,而不是整个项目).因此,假设我们在版本2.5.4中发布模块A,导致A.jar被部署为版本2.5.4,并通过将模块代码更新为2.5.5-SNAPSHOT完成.

完成此操作后,我们需要更新主pom中的版本,以便所有模块继续引用正确的版本.

感谢主pom的dependencyManagement部分,如果我构建War模块,它会自动获取模块A的新版本.

现在是棘手的部分:一旦发布所有模块,就应该发布新版本的Web应用程序.这应该包含所有未更改的模块以及刚刚发布的模块.我目前正在努力如何做到这一点.如果我依赖父poms版本,该版本将包含SNAPSHOT版本(所有版本增量太高),我和发布插件不允许.

这种困境的最佳解决方案是什么?

我有一个想法是将依赖关系管理外包给一个单独的pom,然后使用"import"范围将其导入到主poms dependencyManagement中.

这种szenario是一个愚蠢的想法吗?是否有开发和维护这样的大型多模块应用程序的替代方案?简单地使用整个项目中的发布插件使所有版本同步并不是一个选项,因为应用程序很大并且客户端应用程序必须加载更新的模块版本.我们的一些客户的连接速度非常慢,因此每次推出所有模块都会让他们感到非常不满.

非常感谢,

克里斯

release release-management pom.xml maven maven-release-plugin

9
推荐指数
1
解决办法
4428
查看次数

是否有任何通用的Maven代码生成器?

我目前正在开发一个项目,它为各种目的强烈使用代码生成.一个生成器从jpa实体生成SQL脚本.另一个从pojos生成DTO,另一个生成JPA2.0元模型,另一个生成基于Java类的一些xml和模式文件...每个生成器完全不同需要以不同方式配置.

我现在的问题是......是否有任何通用的maven代码生成器插件具有以下属性: - 创建Java类的pojo模型(Names,Properties,Annotation,Methods ...) - 使用模板定义输出使用pojo模型生成任何输出. - 允许我为一个类指定多个模板 - 允许我生成代码和资源 - 允许我为目标/生成源生成基类,并为src/main/java生成一个虚拟实现,它只是扩展基类(如果src/main/java中的虚拟类存在,没有任何反应,如果它不生成这样的虚拟类.此代码签入SCM并允许手动扩展生成的类)

我使用Flexmojos GraniteDS插件生成我的ActionScript模型代码,但它非常适合于特定用途.

我认为这样的通用发电机会让事情变得容易多了.

java code-generation maven

7
推荐指数
1
解决办法
2252
查看次数

是否有GWT Maven项目结构,不会混淆责任?

我刚刚开始使用Maven作为构建系统进行GWT开发.

我来自Java + Flex世界,所以我自然而然地将客户端模块和服务器端模块完全分开.

在深入挖掘最佳实践和深入挖掘的同时,GWT项目的默认配置越来越像是一堆混乱的责任.特别是涉及多模块项目时.

我确实理解,该约定规定服务器端逻辑属于"服务器"包,共享代码位于"共享"中,并且由GWT编译器在"客户端"包中编译为HTML + JavaScript.所有代码都转到src/main/java.到现在为止还挺好.

无论我如何尝试看到它...对我来说,"客户端"包中的东西只是死代码.即使java编译器将其编译为类,也不会在运行时使用这些类,只需要在编译阶段向GWT编译器提供输入.因此,即使它看起来像Java,它实际上并不像Java那样.把它们放在与"实时"代码相同的罐子里有点脏.

像这样的maven结构不会更有意义:

/src/
/src/main/
/src/main/java
/src/main/shared
/src/main/gwt
Run Code Online (Sandbox Code Playgroud)

让java-compiler-plugin使用src/main/java和src/main/shared以及GWT编译器使用src/main/gwt和src/main/shared?

如果构建会产生两种类型的工件,那么它会感觉好多了......正常的"jars"包含来自src/main/java和src/main/shared的clases以及第二个"gwt",其中包含类和源src/main/gwt和src/main/shared.

我不会在某些混合jar中添加依赖项,但可以决定是否要导入一些GWT组件,或者是否要导入一些服务器端功能.

接下来就是GWT默认是将xml,资源和其他东西放在src/main/java中...... XML && Resources!= Java ;-)

或者是否存在所有这一切的真正原因,我还没有意识到......或者我只是不得不开始变得肮脏而不是那样的东西?

克里斯

java gwt maven

5
推荐指数
2
解决办法
989
查看次数

有没有办法以编程方式配置MDB?

我目前正在研究在GlassFish上运行的基于EJB 3.1的项目,该项目使用自定义构建的框架来配置任何SessionBeans的功能.使用此功能,我们可以在运行时启用,禁用和重新配置大多数服务.不幸的是,我们不能将其扩展到支持MDB的分配.我想根据配置信息设置MDB正在使用的选择器,如果设置改变则重新配置它.

不幸的是,我只能提出一个SessionBean,它根据配置在JMS Sessions上本地创建MessageConsumers,并由MessageListeners提供JMS消息处理,但我被告知这样我们将失去并发性和EJB系统的事务处理因为我们不再以这种方式使用MDB.

那么有什么办法可以做我正在寻找使用MDB的东西吗?有人告诉我在新的EJB和JMS规范草案中有一些计划的扩展,但我找不到指向该特定主题的指针.

ejb jms glassfish ejb-3.1

5
推荐指数
1
解决办法
188
查看次数

为什么我只在某些Windows 7系统上需要java.net.preferIPv4Stack = true?

我在Windows 7(64位)计算机上使用Java已经有一段时间了,并且从未遇到过无法创建网络连接的问题.现在在我正在工作的公司的系统上我需要设置"-Djava.net.preferIPv4Stack = true"或者似乎java进程无法创建单个连接.

缺点是,如果我没有设置"_JAVA_OPTIONS",我将不得不配置大量服务来使用此设置.但是,如果我使用它,Java将这个愚蠢的"拾起:_JAVA_OPTIONS ......"输出到stderr(不知道哪个人做出了那个愚蠢的决定).然而,这使得我的GWT编译在IntelliJ中失败.

我想知道的......这是我第一次遇到这些问题,我猜他们必须以某种方式与操作系统的设置有关.可能导致这些问题的原因(正如我所提到的......我有大约4个其他具有Windows 7和64位java vms的系统没有这些问题).

克里斯

java networking windows-7

5
推荐指数
1
解决办法
3万
查看次数

Maven 插件来处理许可证?

由于 Maven pom 可以包含许可证信息,例如,您是否可以通过某种方式告诉您的构建“Apache v2”许可证是可以的,但是 GPL 例如不是,并且当您构建 Maven 时,如果需要的依赖项禁止许可证和最终要求你接受未知的?

我知道有可用的插件可以创建项目中所有已使用许可证的报告,但我找不到一个插件可以让您定义什么是可以的,什么是不可以的,如果不知道就要求确认.

licensing maven

4
推荐指数
1
解决办法
3963
查看次数