我们有一个项目利用其他组提供的Web服务。他们为Web服务提供3组JAR,每个环境设置一套(Dev vs Test vs Prod)。
在Eclipse中构建具有不同JAR的Dev / Test / Prod项目的最佳方法是什么?这就是我的想法:
我可以使用Ant脚本为特定环境选择公共库以及lib。如果我采用这种方案,是否有一种简单的方法可以告诉Eclipse默认查看lib和lib_dev(用于编译和Eclipse WAR创建)?或者有更好的方法来设置这样的项目吗?
答案 0 :(得分:1)
我认为最好的方法是在Eclipse(M2Eclipse)中使用Maven项目,以及使用Maven存储库(例如Nexus)来维护您的jar文件。
你在pom中定义:
对于您的构建,您只需致电:
mvn -P dev/test/prod clean package
它将使用正确的WEB-INF / lib(常见依赖项+特定于配置文件的依赖项)创建战争。
答案 1 :(得分:1)
您不应该为不同的环境构建不同的JAR。
相反,区分环境(例如数据库连接凭证等)所需的配置应该外部化。 JNDI非常适用于此,但可以使用系统属性或外部属性文件等。
然而,如果你真的,真的必须为你的开发人员提供不同的二进制文件,那么你的测试人员(嗯,他们对你的开发人员看到的东西有多大的信心?)以及最后的生产(不同于什么?测试者看到了,然后@Benoit Courtine提出了一个很好的方法。
答案 2 :(得分:0)
这实际上取决于您正在使用的构建系统的“正确”答案。更改构建系统没有任何意义,除非它被破坏。如果您正在使用基于Eclipse PDE构建的东西,以下是处理这种情况的好方法。
为4个罐子中的每个罐子创建一个项目。该项目将只包含lib路径上的jar并导出它包含的包。依赖于常见jar的3个jar也可以添加包导入。然后,您将使用.product导出功能为每个配置生成3个.product文件来构建软件。
答案 3 :(得分:0)
必须同意@Gary Rowe,我将补充说,多个罐子似乎有点傻到访问我认为是在三个不同环境中的相同Web服务。唯一不同的是WSDL。
这可以通过一些简单的操作来轻松完成,运行时VM参数指示要使用哪一个,然后将所有三个包含在同一个jar中。我们做了类似的事情,我们定义了-Druntime.env(tst,dev,int,prod或local),然后允许在运行时加载适当的配置。
作为一方 - 在我们的例子中,我们只使用WSDL并使用maven生成Java代码,作为Apache CXF构建过程的一部分。根本不需要实际的jar文件。