每个项目有多个源文件夹和jar - maven vs gradle

时间:2012-11-05 21:04:28

标签: maven jar gradle

我需要调查Maven和Gradle是否提供相同的灵活性来为多个源文件夹的每个项目生成多个jar文件。

我知道这通常不推荐,但我需要比较这两个构建工具的功能/灵活性(当前不能选择多模块maven项目结构)。

摇篮

在gradle中,这非常简单:

sourceSets {
  main {
    java {
      srcDir 'src'
    }
  }
  other {
    java {
      srcDir 'other'
    }
  }
}
task otherJar(type: Jar) {
    from sourceSets.other.output
    classifier = 'other'
    customName = 'other.jar'
}

使用gradle构建时,类文件的组织方式如下:

build
 > classes
     > main
       > com
     > other
       > com

这非常好,因为它可以“回溯”相应类所源自的源文件夹。因此,可以为每个sourceSet提供相同的包名称,并且仍然可以使用正确的类获得单独的jar文件。

的Maven

在maven中,这似乎不可能。尽管可以使用build-helper-maven-plugin(用于指定多个源文件夹)和maven-jar-plugin(用于构建多个jar文件)的组合,但只能在包级别上拆分源,请参阅{ {3}}中的{3}}。

据我所知,这是因为编译类没有根据maven中的原始源文件夹在目标/类文件夹中进行组织。

所以如果需要:

  1. 为源项目文件夹之间可能具有相同名称的包的项目提供多个源文件夹。
  2. 为每个源文件夹生成一个jar文件。
  3. 需要使用gradle(或任何其他提供此灵活性的构建工具)。或者我错过了maven提供同样灵活性的秘密后门?

0 个答案:

没有答案