1.1.2.13. fejezet, Futtatható jar csomagolás

pom.xml szerkesztése

    <properties>
        <fully.qualified.main.class>hu.infokristaly.homework.ws.Homework4WSClient</fully.qualified.main.class>
    </properties>
	<build>
		<sourceDirectory>src</sourceDirectory>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<addClasspath>true</addClasspath>							
							<mainClass>${fully.qualified.main.class}</mainClass>
						</manifest>
					</archive>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
				</configuration>
				<executions>
					<execution>
						<id>make-my-jar-with-dependencies</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
mvn clean package assembly:single

Futtatáshoz

			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>exec-maven-plugin</artifactId>
				<version>1.2.1</version>
				<configuration>
					<mainClass>${fully.qualified.main.class}</mainClass>
				</configuration>
			</plugin>
mvn exec:java

JDK11 JavaFX projekt

Futtatható jar készítéséhez használjuk a maven-shade-plugin maven plugin-t:

            <plugin>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>hu.infokristaly.jpasswordprotector.SuperMain</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

Itt a SuperMain egy egyszerű wrapper osztály, ami szükséges.

public class SuperMain {
    public static void main(String[] args) {
        JPasswordProtector.main(args);
    }
}

Az így elkészült .jar-t egyszerűen futtathatjuk parancssorból.