Maven building only changed files

前端 未结 7 984
Happy的楠姐
Happy的楠姐 2020-12-13 01:59

Lets say i have module structure like below

     Modules
       ->utils
       ->domain
       ->client
       ->services
       ->deploy (th         


        
7条回答
  •  误落风尘
    2020-12-13 02:57

    For GIT

    mvn install -amd -pl $(git status | grep -E "modified:|deleted:|added:" | awk '{print $2}' | cut -f1 -d"/")

    OR

    In your .bashrc file (.bashrc can be found in home directory ~/.bashrc , or create it if doesn't exists) add the following function.

    mvn_changed_modules(){
        [ -z "$1" ] && echo "Expected command : mvn_changed_modules (install/build/clean or any maven command)" && exit 0
    
            modules=$(git status | grep -E "modified:|deleted:|added:" | awk '{print $2}' | cut -f1 -d"/")
    
                    if [  -z "$modules" ];
                    then
                            echo "No changes (modified / deleted / added)  found"
                    else
                            echo "Changed modules are : `echo $modules`"
                            mvn $1 -amd -pl $modules
                    fi
    }
    


    Then after re-starting your bash (command prompt), you can just use the following command from the ROOT directory itself.

    smilyface@machine>MainDir]$ mvn_changed_module install


    How it works?
    As per Question mvn install -amd -pl services is the command when "some changes done in services module". So, first get module name from the changed file(s) and put it as input for mvn-install command

    Say for example, below is a list of modified files (output of git status) -
    services/pom.xml
    services/ReadMe.txt
    web/src/java/com/some/Name.java
    Then services and web are the modules name which need to be build / compile / install

提交回复
热议问题