Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于两个依赖API版本的Java&;专家_Java_Maven_Hadoop_Hive_Parquet - Fatal编程技术网

基于两个依赖API版本的Java&;专家

基于两个依赖API版本的Java&;专家,java,maven,hadoop,hive,parquet,Java,Maven,Hadoop,Hive,Parquet,我们有一个JavaMaven项目,它依赖于一个库(具体来说是Hive/HadoopAPI中的拼花)。依赖项的API(parquet.hadoop.API到org.apache.parquet.hadoop.API)在特定的parquet/hadoop版本中发生了更改。但是我们的项目应该能够根据新版本和旧版本进行编译 如何在构建时为不同版本的依赖项编写两个实现,并进行切换?我们不想维护单独的项目 一个想法是在模块中使用两个maven配置文件: 实现同一类的两个变体的两个附加模块 旧版本和新版本的

我们有一个JavaMaven项目,它依赖于一个库(具体来说是Hive/HadoopAPI中的拼花)。依赖项的API(parquet.hadoop.API到org.apache.parquet.hadoop.API)在特定的parquet/hadoop版本中发生了更改。但是我们的项目应该能够根据新版本和旧版本进行编译

如何在构建时为不同版本的依赖项编写两个实现,并进行切换?我们不想维护单独的项目

一个想法是在模块中使用两个maven配置文件:

  • 实现同一类的两个变体的两个附加模块
  • 旧版本和新版本的两个maven配置文件。每个概要文件包括一个不同的模块

但也许有更好或完全不同的方法?我们是否可以只使用概要文件而不添加模块(项目中还没有模块)?

根据我自己的经验:使用maven概要文件。我不知道这是否是最好的选择,但这是我在几个不同的项目中看到的效果restrictions@Repoker谢谢Maven概要文件很好,但问题是我们还没有模块,除非我们真的需要它们,否则我们不想添加它们,因为它们增加了一些复杂性/开销。我希望有另一个没有模块的解决方案。@Repoker补充:我想你是说maven配置文件与模块结合?因为我不知道通过Maven配置文件包含/排除源文件的任何方法。创建两个不同的项目—一个用于新API,一个用于旧API—将适当的代码放入适当的项目中。这意味着每个项目都可以有独立的依赖项,并且可以对其运行自己的测试。对于这样的事情,配置文件是一个坏主意。如果你需要这两种东西,如何处理为这两个区域构建配置文件?那会变得一团糟…@khmarbaise谢谢,但我不确定我是否能找到你。拥有两个项目意味着复制99.9%的代码(在我们的例子中),因为只有一个小类依赖于依赖关系,并且必须存在于两个版本中。我将通过指定一个概要文件来处理构建,例如,-P new version或old version,并基于此将特定模块包括在类的新版本或旧版本中。但理想情况下,我也希望避免引入模块,以保持简单。