Budowa paczki Jar

Budowa paczki Jar
Zibi Gajda
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 2 lata
  • Postów:10
0

Cześć
Może to banalne, ale chciałem zapytać jak zrobic aby polecenie mvn clean install budowalo paczke JAR ktorą będzie sie dalo od razu uruchomic (jakis testowy main w ktoym bedzie np: Sysout(dzisiaj piątek :d)).
Używam Intellija.

KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Silesia/Marki
  • Postów:5505
0

A masz już testowy kod napisany? (Sysout(dzisiaj piątek :d))? bo jak masz dobrze skonfigurowanego mavena (plik pom.xml) to mvn clean install powinno zbudować jara. Będzie on lokalnie folderze projektu, oraz poinien też być folderze z ściągniętymi jarami (folder zaczynający się normalnie od .m2)


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
Zibi Gajda
Nie mam jeszcze testowego kodu. Czyli wystarczy sout z wiadomością , który odpala się w testowym main i w pliku pom wrzucić nazwę klasy gdzie znajduje się testowany main? Dobrze rozumiem ? W jaki sposób skonfigurować plik pom? Gdy np mam projekt i w niej dwie klasy Main i w jednej znajduje się sout z wiadomością i chcę z niej zbudować paczkę Jar
99xmarcin
  • Rejestracja:około 5 lat
  • Ostatnio:5 miesięcy
  • Postów:2420
3

Żeby jar się odpala musisz miec ustawiony mainClass w manifeście. W mavenie robi się to tak:

Kopiuj
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <mainClass>
                    com.baeldung.executable.ExecutableMavenJar
                </mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

źródło: https://www.baeldung.com/executable-jar-with-maven


Holy sh*t, with every month serenityos.org gets better & better...
S9
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
5

Jeśli mamy jakieś dodatkowe zależności (inne biblioteki) to trzeba zbudować tzw fat jar, np przez maven assembly plugin.


.andy
no i przy bibliotekach kryptograficznych trzeba dołączyć tylko precompilowane, bo potem jeżeli sami zaczniemy kompilować to podpisy się nie zgadzają.
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
1
Aleksander32 napisał(a):

Jeśli mamy jakieś dodatkowe zależności (inne biblioteki) to trzeba zbudować tzw fat jar, np przez maven assembly plugin.

Dokładnie. A co do komendy mavena, to można pominąć testy integracyjne i zbudować jara poleceniem mvn clean package - wtedy nowy jar będzie w folderze target w katalogu projektowym

IV
  • Rejestracja:ponad 4 lata
  • Ostatnio:3 miesiące
  • Postów:30
1

Alternatywą dla maven-assembly-plugin jest maven-shade-plugin.

Zibi Gajda
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 2 lata
  • Postów:10
0

Dzięki za odzew. Staram się to zrobić. Tym razem pojawia się błąd przy poleceniu mvn clean install dostaję "java.io.FileNotFoundException: C:\Users\Alienware\IdeaProjects\zadanie\target\jacoco.exec (Nie mozna odnalezc okreslonego pliku)".
Plik jacoco.exec nie generuje się w folderze target.
Czy ktoś mógłby wskazać gdzie nanieść poprawkę??
Poniżej wrzucam plik pom.xml

Kopiuj



<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
    <artifactId>zadanie</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.3</version>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>5.7.0</version>
        </dependency>

        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.7</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M5</version>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.5.10.201208310627</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <!-- attached to Maven test phase -->
                    <execution>
                        <id>jacoco-site</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <!-- Build an executable JAR -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>task.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
edytowany 1x, ostatnio: Zibi Gajda
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
4

wywal jacoco-maven-plugin? :D Tak to jest jak ktoś kopiuje losowe kody z internetu. Nie wiem czemu oczekujesz ze jakieś jacoco.exe ci się wygeneruje. Jacoco to jest tool do mierzenia pokrycia testami aplikacji. Dodałeś plugin który w trakcie budowania aplikacji pusci testy i sprawdzi code coverage.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 2x, ostatnio: Shalom

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.