使用不同的构建/着色代码生成生成的jar

时间:2014-04-04 03:32:17

标签: maven

我们正在重构我们的应用程序以允许多个数据库支持,主要是MySQL(当前)和MongoDB(在开发中)。对于MySQL,我们必须在tomcat jdbc池代码中进行着色,对于Mongo,我们在java驱动程序中进行着色。我需要生成两个版本 - 一个用于MySQL,一个用于Mongo。

我正在尝试使用maven找到一种方法 - 只有shacat tomcat-jdbc或mongo以及该数据库系统所需的一些内部代码。但是,我没有看到多个构建的方式,并且看到了几个SO答案,建议不要使用它。

我还考虑过将数据库代码完全分离到不同的项目中 - 所以我们可以提供产品,第二个jar包含mysql或mongo代码。这对最终用户来说有点麻烦,但对我们来说更清洁。

建议?

1 个答案:

答案 0 :(得分:0)

maven(或任何其他依赖管理系统)中有一条非常重要的规则:

不同的结果应始终具有不同的坐标

或反过来说:

无论配置文件或目标系统如何,从相同的源代码状态构建都应始终产生相同的工件。

因此,如果要生成两个不同的结果,则需要它们具有不同的坐标。你有两个选择:

a)一个项目创建不同的分类器(这是丑陋但可行的)

b)或者创建两个子模块myproject-mysqlmyproject-mongodb(这反过来会影响你的主代码和相应的db-code)(不同的artifactIds)

创建一个完整的jar没有任何反对阴影,在你的情况下只需创建两个独立的jar,它们本身是完全可行的。