Having read the above offers, I must say that I wo...
# kobalt
b
Having read the above offers, I must say that I would prefer something closer to what Maven actually does. If I’m producing modules, I would rather keep the respective build file within the module. I have been playing around with this concept but haven’t had the time to finish it for presentation to the kobalt team. But since the discussion is up, here goes. Why not just use a root plugin that loads the underlaying modules? For example, the following plugin would pass the build tasks down to the modules for execution.
Copy code
import com.beust.kobalt.plugin.modules.modulesProject

val m = modulesProject {

    name = "ModulesProjectExample"
    group = "com.beust.kobalt"
    artifactId = "modules-project-example"
    version = "1.0"

    modules("module1", "module2")
}
Advantages: - Projects can be easily coupled/decoupled as modules as needed - Modules can be easily built separately (no need to build/parse all modules) - Syntax can still be the one currently used Disadvantages: - Requires IDE to load each module Build.kt, meaning that something like package or build files name will have to be modified in order to ensure uniqueness in the source path. In other words, this is precisely the same that maven does:
Copy code
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>modules-project-example</groupId>
    <artifactId>modules-project-example</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>
    <name>Modules Project Example</name>

    <modules>
        <module>module1</module>
        <module>module2</module>
    </modules>

</project>