$ mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=1.5 \ -DgroupId=mtitek.maven.jar.samples \ -DartifactId=mtitek-maven-jar-samples \ -Dpackage=mtitek.maven.jar.samples \ -Dversion=1.0.0-SNAPSHOT \ -DinteractiveMode=falseThe generated project structure will look like this:
$ find ./mtitek-maven-jar-samples/ -type f ./mtitek-maven-jar-samples/pom.xml ./mtitek-maven-jar-samples/src/main/java/mtitek/maven/jar/samples/App.java ./mtitek-maven-jar-samples/src/test/java/mtitek/maven/jar/samples/AppTest.javaThe archetype creates a minimal structure. Typically the project structure should look like:
mtitek-maven-jar-samples/ ├── pom.xml ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── mtitek/ │ │ │ └── maven/ │ │ │ └── jar/ │ │ │ └── samples/ │ │ │ ├── App.java │ │ │ └── SomeClass.java │ │ ├── resources/ │ │ │ └── application.properties │ │ └── test/ │ │ └── java/ │ │ └── mtitek/ │ │ └── maven/ │ │ └── jar/ │ │ └── samples/ │ │ └── AppTest.java └── target/ └── mtitek-maven-jar-samples-1.0.0-SNAPSHOT.jar
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mtitek.maven.jar.samples</groupId> <artifactId>mtitek-maven-jar-samples</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Spring Boot property --> <java.version>23</java.version> <!-- maven-compiler-plugin properties --> <maven.compiler.source>23</maven.compiler.source> <maven.compiler.target>23</maven.compiler.target> <maven.compiler.release>23</maven.compiler.release> <!-- format of maven.build.timestamp environment variable --> <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format> <!-- Plugin versions --> <maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version> <maven-jar-plugin.version>3.4.2</maven-jar-plugin.version> <maven-surefire-plugin.version>3.5.3</maven-surefire-plugin.version> <junit.version>5.13.1</junit.version> </properties> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> <encoding>UTF-8</encoding> <!-- optional if maven.compiler.source property is set --> <source>${maven.compiler.source}</source> <!-- optional if maven.compiler.target property is set --> <target>${maven.compiler.target}</target> </configuration> </plugin> <!-- Surefire plugin for JUnit 5 support --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>${maven-jar-plugin.version}</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>mtitek.maven.jar.samples.App</mainClass> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> </manifest> <manifestEntries> <Implementation-Build>${maven.build.timestamp}</Implementation-Build> <Implementation-Title>mtitek maven jar samples</Implementation-Title> <Implementation-Version>${project.version}</Implementation-Version> <Implementation-Vendor-Id>mtitek</Implementation-Vendor-Id> <Implementation-URL>http://www.mtitek.com</Implementation-URL> <custom-manifest-entry>mtitek</custom-manifest-entry> </manifestEntries> </archive> </configuration> <executions> <execution> <id>default-jar</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> <execution> <id>test-jar</id> <phase>package</phase> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>Build the project:
$ mvn clean installUse the command "java -jar" to test your jar:
$ java -jar target/mtitek-maven-jar-samples-1.0.0-SNAPSHOT.jar
Hello World!