Search code examples
javagitapachemavenmvn-repo

What files in a Maven project should be committed to git?


I want to know what files in a Maven project should be committed to git.

Am I suppose to perform a mvn clean before committing, or do I add certain files to the .gitignore file?


Solution

  • Personally I use Maven gitignore and Java gitignore for a Maven project. You might need to adjust it with the languages used in your Maven project.

    https://github.com/github/gitignore/blob/master/Maven.gitignore

    target/
    pom.xml.tag
    pom.xml.releaseBackup
    pom.xml.versionsBackup
    pom.xml.next
    release.properties
    dependency-reduced-pom.xml
    buildNumber.properties
    .mvn/timing.properties
    # https://github.com/takari/maven-wrapper#usage-without-binary-jar
    .mvn/wrapper/maven-wrapper.jar
    

    https://github.com/github/gitignore/blob/master/Java.gitignore

    # Compiled class file
    *.class
    
    # Log file
    *.log
    
    # BlueJ files
    *.ctxt
    
    # Mobile Tools for Java (J2ME)
    .mtj.tmp/
    
    # Package Files #
    *.jar
    *.war
    *.nar
    *.ear
    *.zip
    *.tar.gz
    *.rar
    
    # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
    hs_err_pid*
    

    Is it good practice to perform mvn clean before committing, or do I add certain files to the .gitignore file?

    Add rules to your .gitignore file first, which makes Git ignores the undesired files correctly. Understanding Maven standard directory layout will also help you better determine which are the undesired directories.