java - كيف يمكنني إنشاء JAR القابل للتنفيذ مع التبعيات باستخدام Maven؟




maven-2 build-process (20)

إذا كنت تريد إذا كان من سطر الأوامر نفسها. فقط قم بتشغيل الأمر أدناه من مسار المشروع

جمعية mvn: التجمع

أريد أن أحزم مشروعي في JAR واحد قابل للتنفيذ للتوزيع.

كيف يمكنني جعل حزمة مشروع Maven جميع JARs التبعية في الانتاج بلدي JAR؟


إليك ملحق جرة قابل للتنفيذ لبرنامج Maven الذي نستخدمه في Credit Karma. يخلق جرة من الجرار مع classloader قادرة على تحميل الطبقات من الجرار المتداخلة. هذا يسمح لك بالحصول على نفس المسار في dev و prod مع الاحتفاظ بجميع الطبقات في ملف jar موقَّع مفرد.

https://github.com/creditkarma/maven-exec-jar-plugin

وهنا بلوق وظيفة مع تفاصيل حول البرنامج المساعد ولماذا https://engineering.creditkarma.com/general-engineering/new-executable-jar-plugin-available-apache-maven/ : https://engineering.creditkarma.com/general-engineering/new-executable-jar-plugin-available-apache-maven/


استخدم maven-shade-plugin لحزم جميع التبعيات في جرة uber واحدة. يمكن استخدامه أيضًا في إنشاء جرة قابلة للتنفيذ من خلال تحديد الفئة الرئيسية. بعد محاولة استخدام maven-assembly و maven-jar ، وجدت أن هذا البرنامج المساعد يناسب احتياجاتي.

لقد وجدت هذا المكون الإضافي مفيدًا بشكل خاص لأنه يدمج محتوى ملفات محددة بدلاً من استبدالها. هذا مطلوب عند وجود ملفات الموارد التي لها نفس الاسم عبر الجرار ويحاول البرنامج المساعد حزم كافة ملفات الموارد

انظر المثال أدناه

      <plugins>
    <!-- This plugin provides the capability to package the artifact in an uber-jar, including its dependencies and to shade - i.e. rename - the packages of some of the dependencies. -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <artifactSet>
                        <!-- signed jars-->
                            <excludes>
                                <exclude>bouncycastle:bcprov-jdk15</exclude>
                            </excludes>
                        </artifactSet>

                         <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <!-- Main class -->
                                <mainClass>com.main.MyMainClass</mainClass>
                            </transformer>
                            <!-- Use resource transformers to prevent file overwrites -->
                            <transformer 
                                 implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>properties.properties</resource>
                            </transformer>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                <resource>applicationContext.xml</resource>
                            </transformer>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/cxf/cxf.extension</resource>
                            </transformer>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                <resource>META-INF/cxf/bus-extensions.xml</resource>
                            </transformer>
                     </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>

استخدمت منذ فترة طويلة البرنامج المساعد لتجميع maven ، ولكن لم أتمكن من العثور على حل للمشكلة مع "already added, skipping" . الآن ، أستخدم onejar-maven-plugin آخر - onejar-maven-plugin . مثال أدناه ( mvn package build jar):

<plugin>
    <groupId>org.dstovall</groupId>
    <artifactId>onejar-maven-plugin</artifactId>
    <version>1.3.0</version>
    <executions>
        <execution>
            <configuration>
                <mainClass>com.company.MainClass</mainClass>
            </configuration>
            <goals>
                <goal>one-jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

تحتاج إلى إضافة مستودع لهذا البرنامج المساعد:

<pluginRepositories>
    <pluginRepository>
        <id>onejar-maven-plugin.googlecode.com</id>
        <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
    </pluginRepository>
</pluginRepositories>

خيار آخر إذا كنت تريد حقاً إعادة تجميع محتويات JARs الأخرى داخل JAR الناتج الخاص بك هو المكون الإضافي التجريبي Maven . يقوم بتفكيك ثم إعادة حزم كل شيء إلى دليل عبر <unpack>true</unpack> . ثم سيكون لديك تمرير الثاني الذي بناؤه في JAR ضخمة واحدة.

onejar-maven-plugin . يقوم هذا بتنفيذ إجراءات إعادة التعبئة المذكورة أعلاه في خطوة واحدة.


ذهبت من خلال كل واحدة من هذه الردود تبحث لجعل جرة قابلة للتنفيذ الدهون تحتوي على جميع التبعيات ولم يعمل أي منهم على حق. الجواب هو البرنامج المساعد الظل ، سهل جدا ومباشر.

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>2.3</version>
      <executions>
         <!-- Run shade goal on package phase -->
        <execution>
        <phase>package</phase>
        <goals>
            <goal>shade</goal>
        </goals>
        <configuration>
          <transformers>
             <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>path.to.MainClass</mainClass>
             </transformer>
          </transformers>
        </configuration>
          </execution>
      </executions>
    </plugin>

يجب أن تدرك أن التبعيات الخاصة بك تحتاج إلى نطاق من الترجمة أو وقت التشغيل لهذا العمل بشكل صحيح.

جاء هذا المثال من mkyong.com


لقد جربت الإجابة الأكثر تصويتًا هنا ، وتمكنت من الحصول على الجرة القابلة للدوران. لكن البرنامج لم يعمل بشكل صحيح. لا أعلم ما هو السبب. عندما أحاول الركض من Eclipse ، أحصل على نتيجة مختلفة ولكن عندما أقوم بتشغيل الجرة من سطر الأوامر ، أحصل على نتيجة مختلفة (تتعطل مع خطأ وقت التشغيل الخاص بالبرنامج).

كان لدي مطلب مماثل مثل OP فقط أن لدي الكثير من التبعية (Maven) لمشروعي. لحسن الحظ ، كان الحل الوحيد الذي عمل بالنسبة لي هو استخدام Eclipse . بسيط جدا وواضح جدا. هذا ليس حلاً لـ OP بل هو حل لشخص لديه متطلبات مماثلة ولكن مع العديد من تبعيات Maven ،

1) فقط انقر بزر الماوس الأيمن على مجلد المشروع الخاص بك (في Eclipse) وحدد Export

2) ثم حدد Java -> Runnable Jar

3) سيُطلب منك اختيار موقع ملف jar

4) وأخيراً ، حدد الفئة التي تحتوي على الطريقة الرئيسية التي تريد تشغيلها ، ثم اختر Package dependencies with the Jar file ، ثم انقر فوق Finish


لقد قمت بالتدوين حول بعض الطرق المختلفة للقيام بذلك.

انظر جرة قابلة للتنفيذ مع Apache Maven (WordPress)

أو executable-jar-with-maven-example (GitHub)

ملاحظات

يتم توفير هذه الايجابيات والسلبيات من قبل Stephan .

للنشر اليدوي

  • الايجابيات
  • سلبيات
    • تبعيات من الجرة النهائية.

نسخ التبعيات إلى دليل معين

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>copy-dependencies</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>copy-dependencies</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.directory}/${project.build.finalName}.lib</outputDirectory>
      </configuration>
    </execution>
  </executions>
</plugin>

جعل جرة Executable و Classpath Aware

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
        <classpathPrefix>${project.build.finalName}.lib/</classpathPrefix>
        <mainClass>${fully.qualified.main.class}</mainClass>
      </manifest>
    </archive>
  </configuration>
</plugin>

في هذه المرحلة ، تكون jar قابلة للتنفيذ بالفعل مع عناصر classpath خارجية.

$ java -jar target/${project.build.finalName}.jar

جعل المحفوظات القابلة للنشر

الملف jar قابل للتنفيذ فقط مع sibling ...lib/ directory. نحتاج إلى نشر أرشيفات مع الدليل ومحتواه.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <id>antrun-archive</id>
      <phase>package</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <target>
          <property name="final.name" value="${project.build.directory}/${project.build.finalName}"/>
          <property name="archive.includes" value="${project.build.finalName}.${project.packaging} ${project.build.finalName}.lib/*"/>
          <property name="tar.destfile" value="${final.name}.tar"/>
          <zip basedir="${project.build.directory}" destfile="${final.name}.zip" includes="${archive.includes}" />
          <tar basedir="${project.build.directory}" destfile="${tar.destfile}" includes="${archive.includes}" />
          <gzip src="${tar.destfile}" destfile="${tar.destfile}.gz" />
          <bzip2 src="${tar.destfile}" destfile="${tar.destfile}.bz2" />
        </target>
      </configuration>
    </execution>
  </executions>
</plugin>

الآن لديك target/${project.build.finalName}.(zip|tar|tar.bz2|tar.gz) يحتوي كل منها على jar و lib/* .

Apache Maven Assembly Plugin

  • الايجابيات
  • سلبيات
    • لا يوجد دعم نقل فئة (استخدام maven-shade-plugin إذا كان هناك حاجة إلى نقل الفئة).
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      <configuration>
        <archive>
          <manifest>
            <mainClass>${fully.qualified.main.class}</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
    </execution>
  </executions>
</plugin>

لديك target/${project.bulid.finalName}-jar-with-dependencies.jar .

Apache Maven Shade Plugin

  • الايجابيات
  • سلبيات
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <shadedArtifactAttached>true</shadedArtifactAttached>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>${fully.qualified.main.class}</mainClass>
          </transformer>
        </transformers>
      </configuration>
    </execution>
  </executions>
</plugin>

لديك target/${project.build.finalName}-shaded.jar .

onejar-مخضرم-المساعد

  • الايجابيات
  • سلبيات
    • غير مدعوم بشكل نشط منذ عام 2012.
<plugin>
  <!--groupId>org.dstovall</groupId--> <!-- not available on the central -->
  <groupId>com.jolira</groupId>
  <artifactId>onejar-maven-plugin</artifactId>
  <executions>
    <execution>
      <configuration>
        <mainClass>${fully.qualified.main.class}</mainClass>
        <attachToBuild>true</attachToBuild>
        <!-- https://code.google.com/p/onejar-maven-plugin/issues/detail?id=8 -->
        <!--classifier>onejar</classifier-->
        <filename>${project.build.finalName}-onejar.${project.packaging}</filename>
      </configuration>
      <goals>
        <goal>one-jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

الربيع التمهيد Maven البرنامج المساعد

  • الايجابيات
  • سلبيات
    • إضافة فصول الربيع المحتملة والربيعية التمهيد غير الضرورية المحتملة.
<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
      <configuration>
        <classifier>spring-boot</classifier>
        <mainClass>${fully.qualified.main.class}</mainClass>
      </configuration>
    </execution>
  </executions>
</plugin>

لديك target/${project.bulid.finalName}-spring-boot.jar .


مشكلة في تحديد موقع ملف التجميع المشترك مع maven-assembly-plugin-2.2.1؟

حاول استخدام معلمة التكوين descriptorId بدلاً من واصفات / واصف أو descriptorRefs / descriptorRef المعلمات.

لا يفعل أي منهما ما تحتاج إليه: ابحث عن الملف في مسار classpath. بالطبع تحتاج إلى إضافة الحزمة حيث يتواجد التجميع المشترك على مسار فصيلة maven-assembly-plugin (انظر أدناه). إذا كنت تستخدم Maven 2.x (وليس Maven 3.x) ، فقد تحتاج إلى إضافة هذه التبعية في أعلى pom.xml الأصل في قسم pluginManagement.

انظر this لمزيد من التفاصيل.

Class: org.apache.maven.plugin.assembly.io.DefaultAssemblyReader

مثال:

        <!-- Use the assembly plugin to create a zip file of all our dependencies. -->
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2.1</version>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <descriptorId>assembly-zip-for-wid</descriptorId>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>cz.ness.ct.ip.assemblies</groupId>
                    <artifactId>TEST_SharedAssemblyDescriptor</artifactId>
                    <version>1.0.0-SNAPSHOT</version>
                </dependency>
            </dependencies>
        </plugin>

من خلال الإجابة التي لم تتم الإجابة عليها وإعادة تنسيقها ، لدينا:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>fully.qualified.MainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

بعد ذلك ، أوصيك بجعل هذا جزءًا طبيعيًا من بنائكم ، بدلاً من شيء يدعو إليه بشكل صريح. لجعل هذا جزءًا لا يتجزأ من pom.xml الخاصة بك ، أضف هذا المكوّن الإضافي إلى pom.xml وقم pom.xml بحدث دورة حياة package . ومع ذلك ، فإن كلمة gotcha هي أنك تحتاج إلى استدعاء assembly:single هدف assembly:single إذا وضعته في pom.xml ، بينما يمكنك الاتصال بـ "assembly: assembly" إذا تم تنفيذه يدويًا من سطر الأوامر.

<project>
  [...]
  <build>
      <plugins>
          <plugin>
              <artifactId>maven-assembly-plugin</artifactId>
              <configuration>
                  <archive>
                      <manifest>
                          <addClasspath>true</addClasspath>
                          <mainClass>fully.qualified.MainClass</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>
</project>

يجب أن يكون الأمر كذلك:

    <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                        <execution>
                                <id>unpack-dependencies</id>
                                <phase>generate-resources</phase>
                                <goals>
                                        <goal>unpack-dependencies</goal>
                                </goals>
                        </execution>
                </executions>
        </plugin>

يجب أن يكون التفريغ في مرحلة توليد الموارد لأنه في حالة الطرد ، لن يتم تضمينه كموارد. جرب حزمة نظيفة وسترى.



يمكنك استخدام البرنامج المساعد للاعتماد على maven ، لكن السؤال هو كيفية إنشاء JAR القابل للتنفيذ. للقيام بذلك يتطلب التغيير التالي لاستجابة ماثيو فرانجلن (راجع للشغل ، باستخدام البرنامج المساعد التبعية يستغرق وقتا أطول لبناء عند البدء من هدف نظيف):

<build>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>fully.qualified.MainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpack-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>unpack-dependencies</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>${basedir}/target/dependency</directory>
        </resource>
    </resources>
</build>

يمكنك استخدام المكون الإضافي maven-shade لإنشاء جرة uber مثل أدناه

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

يمكنك الجمع بين maven-shade-plugin و maven-jar-plugin .

  • maven-shade-plugin الطبقات الخاصة بك وجميع التبعيات في ملف جرة واحد.
  • قم بتكوين maven-jar-plugin لتحديد الفئة الرئيسية من جرة الملف القابل للتنفيذ الخاص بك (راجع إعداد Classpath ، الفصل "Make The Jar Executable").

مثال لتهيئة POM لـ maven-jar-plugin :

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.example.MyMainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

أخيرًا ، قم بإنشاء الجرة التنفيذية عن طريق استدعاء:

mvn clean package shade:shade

أضف إلى pom.xml:

  <dependency>
            <groupId>com.jolira</groupId>
            <artifactId>onejar-maven-plugin</artifactId>
            <version>1.4.4</version>
  </dependency>

و

<plugin>
       <groupId>com.jolira</groupId>
       <artifactId>onejar-maven-plugin</artifactId>
       <version>1.4.4</version>
       <executions>
              <execution>
                     <goals>
                         <goal>one-jar</goal>
                     </goals>
              </execution>
       </executions>
</plugin>

هذا هو. سوف تقوم حزمة mvn القادمة أيضًا بإنشاء جرة سمينة واحدة بالإضافة إلى ذلك ، بما في ذلك جميع جرار التبعية.


لأي شخص يبحث عن خيارات لاستبعاد تبعيات محددة من جرة أوبر ، هذا هو الحل الذي عمل بالنسبة لي:

<project...>
<dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>1.6.1</version>
            <scope>provided</scope> <=============
        </dependency>
</dependencies>
<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>...</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

لذلك فهي ليست تكوينًا للمكوِّن المساعد لـ mvn-group ، بل هي عبارة عن خاصية للتبعية.


عملت maven-assembly-plugin رائعة بالنسبة لي. قضيت ساعات مع البرنامج المساعد للاعبين maven و لم أستطع أن أجعله يعمل. كان السبب الرئيسي هو أنه كان علي أن أعرّف في قسم التكوين بشكل صريح العناصر التي يجب تضمينها كما هو موضح في documentation . هناك مثال على ذلك في الحالات التي تريد استخدامها مثل: mvn dependency:copy، حيث لا يتم تضمين أي عنصر من عناصر artifact ولكنه لا يعمل.


لحل هذه المشكلة ، سنستخدم Maven Assembly Plugin التي ستنشئ JAR مع JARs التبعية الخاصة بها في ملف JAR قابل للتنفيذ. ما عليك سوى إضافة تهيئة المكونات أدناه في ملف pom.xml.

<build>
   <pluginManagement>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
               <archive>
                  <manifest>
                     <addClasspath>true</addClasspath>
                     <mainClass>com.your.package.MainClass</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>
   </pluginManagement>
</build>

بعد القيام بذلك ، لا تنسى تشغيل أداة MAVEN باستخدام هذا الأمر لتجميع الملفات mvn نظيف: single

http://jkoder.com/maven-creating-a-jar-together-with-its-dependency-jars-into-a-single-executable-jar-file/


هناك الملايين من الإجابات بالفعل ، وأردت أن أضيف أنك لا تحتاج <mainClass>إذا كنت لا تحتاج إلى إضافة entryPoint إلى التطبيق الخاص بك. على سبيل المثال ، قد لا تحتوي واجهات برمجة التطبيقات بالضرورة على mainطريقة.

مخضر البرنامج المساعد التكوين

  <build>
    <finalName>log-enrichment</finalName>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>

بناء

mvn clean compile assembly:single

التحقق

ll target/
total 35100
drwxrwx--- 1 root vboxsf     4096 Sep 29 16:25 ./
drwxrwx--- 1 root vboxsf     4096 Sep 29 16:25 ../
drwxrwx--- 1 root vboxsf        0 Sep 29 16:08 archive-tmp/
drwxrwx--- 1 root vboxsf        0 Sep 29 16:25 classes/
drwxrwx--- 1 root vboxsf        0 Sep 29 16:25 generated-sources/
drwxrwx--- 1 root vboxsf        0 Sep 29 16:25 generated-test-sources/
-rwxrwx--- 1 root vboxsf 35929841 Sep 29 16:10 log-enrichment-jar-with-dependencies.jar*
drwxrwx--- 1 root vboxsf        0 Sep 29 16:08 maven-status/






executable-jar