#maven #cheatsheet
Set environment variables:
M2_HOME and bin directory.
linux: export M2_HOME=/usr/local/apache-maven/apache-maven-3.3.1 export M2=$M2_HOME/bin or
export PATH=/Users/xxx/apache-maven-3.0.5/bin:$PATH
|-- pom.xml
`-- src
|-- main
| `-- java
| `--ru
| `-- apache_maven
| `-- App.java
`-- test
`-- java
`-- ru
`-- apache_maven
`-- AppTest.java
sets jdk version for compiler and deletes *.log files on every clean phase
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.5</version>
<configuration>
<filesets>
<fileset>
<directory>${basedir}/src/test/resources</directory>
<includes>
<include>*.log</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
</plugins>
</build>
To run the tests selectively in the Maven you need to specify the surefire plugin or it will run all the tests:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
By default Maven uses the following naming conventions when looking for tests to run:
Test* ,
*Test,
*TestCase
Otherwise, you need to configure:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>Sample.java</include>
</includes>
</configuration>
</plugin>
mvn org.apache.maven.plugins:maven-checkstyle-plugin:check or mvn checkstyle:check
mvn test -X to see full debug
mvn dependency:tree tree dependencies
mvn -o dependency:list displays the list of dependencies
mvn dependency:go-offline resolves all project dependencies, including plugins
mvn clean -X | grep -P --color=always '.+(?=settings.xml)' show settings folder
mvn help:effective-pom displays the effective POM, with the active profiles
mvn help:effective-settings displays the effective settings
mvn help:all-profiles lists the profiles
mvn help:system system info
``
mvn test -Dmaven.compiler.verbose=true runs test phase with verbose property
mvn compiler:testCompileruns only plugin goal
mvn install -DskipTests this will skip running tests, but still compile it
mvn install -Dmaven.test.skip=true this will skip compilation and execution of tests
mvn install -Dtest=FooTest runs only FooTest
mvn -Dmaven.surefire.debug test to debug your tests
mvn '-Dtest=de.mypackage.**.*Test' test with subpackages included