Maven kullanarak ba─č─▒ml─▒l─▒klar─▒ olan ├žal─▒┼čt─▒r─▒labilir bir JAR'─▒ nas─▒l olu┼čturabilirim?


Al─▒nan cevaba git


Projemi da─č─▒t─▒m i├žin tek bir ├žal─▒┼čt─▒r─▒labilir JAR i├žinde paketlemek istiyorum.

Bir Maven proje paketini t├╝m ba─č─▒ml─▒l─▒k JAR'lar─▒n─▒ ├ž─▒k─▒┼č JAR'─▒ma nas─▒l yapabilirim?


2248









Cevap say─▒s─▒n─▒ say: 30






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

ve sen onunla ko┼č

 mvn clean compile assembly:single
 

Derleme hedefi, derlemeden ├Ânce eklenmelidir: tekli veya ba┼čka bir ┼čekilde kendi projenizdeki kod dahil edilmez.

Yorumlardaki daha fazla ayr─▒nt─▒y─▒ g├Âr├╝n.


Genellikle bu ama├ž otomatik olarak y├╝r├╝tmek i├žin bir in┼ča a┼čamas─▒na ba─član─▒r. Bu, mvn install bir da─č─▒t─▒m / s├╝r├╝m ger├žekle┼čtirirken veya ger├žekle┼čtirirken JAR'─▒n olu┼čturulmas─▒n─▒ sa─člar .

 <plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <mainClass>fully.qualified.MainClass</mainClass>
      </manifest>
    </archive>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
  <executions>
    <execution>
      <id>make-assembly</id> <!-- this is used for inheritance merges -->
      <phase>package</phase> <!-- bind to the packaging phase -->
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>
 

2200







Ba─č─▒ml─▒l─▒k eklentisini, t├╝m ba─č─▒ml─▒l─▒klar─▒ paket a┼čamas─▒ndan ├Ânce ayr─▒ bir dizinde ├╝retmek i├žin kullanabilir ve ard─▒ndan bildirinin s─▒n─▒f yoluna dahil edebilirsiniz:

 <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}/lib</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>theMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
 

Alternatif ${project.build.directory}/classes/lib olarak, t├╝m jar dosyalar─▒n─▒ ana jar'a entegre etmek i├žin OutputDirectory olarak kullan─▒n , ancak daha sonra kavanozlar─▒ y├╝klemek i├žin ├Âzel s─▒n─▒f y├╝kleme kodu eklemeniz gerekir.


331







Bunu yapman─▒n farkl─▒ yollar─▒ hakk─▒nda blog yazd─▒m.

Apache Maven ile Y├╝r├╝t├╝lebilir Jar'a Bak─▒n (WordPress)

veya ├žal─▒┼čt─▒r─▒labilir jar-with-maven ├Ârne─či (GitHub)

notlar

Bu art─▒lar ve eksiler Stephan taraf─▒ndan sa─članmaktad─▒r .


Manuel Da─č─▒t─▒m i├žin

  • Art─▒lar─▒
  • Eksileri
    • Ba─č─▒ml─▒l─▒klar son kavanozun d─▒┼č─▒nda.

Ba─č─▒ml─▒l─▒klar─▒ belirli bir dizine kopyala

 <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>
 

Kavanozu ├çal─▒┼čt─▒r─▒labilir Yap─▒n ve S─▒n─▒f Yolunu Aware Yap─▒n

 <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>
 

Bu noktada jar asl─▒nda d─▒┼č s─▒n─▒f yolu elemanlar─▒ ile ├žal─▒┼čt─▒r─▒labilir.

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

Da─č─▒t─▒labilir Ar┼čiv Yap

jar Dosya karde┼č ile sadece ├žal─▒┼čt─▒r─▒labilir oldu─ču ...lib/ dizine. Dizin ve i├žeri─či ile konu┼čland─▒rmak i├žin ar┼čivler olu┼čturmam─▒z gerekiyor.

 <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>
 

┼×imdi sahip target/${project.build.finalName}.(zip|tar|tar.bz2|tar.gz) her i├žeren jar ve lib/* .


Apache Maven Montaj Eklentisi

  • Art─▒lar─▒
  • Eksileri
    • S─▒n─▒f yer de─či┼čtirme deste─či yok (s─▒n─▒f yer de─či┼čtirmenin gerekli olmas─▒ durumunda maven-shade-plugin kullan─▒n).
 <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>
 

Sende var target/${project.bulid.finalName}-jar-with-dependencies.jar .


Apache Maven G├Âlge Eklentisi

  • Art─▒lar─▒
  • Eksileri
 <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>
 

Sende var target/${project.build.finalName}-shaded.jar .


onejar-maven-eklentisi

  • Art─▒lar─▒
  • Eksileri
    • 2012'den beri aktif olarak desteklenmiyor.
 <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>
 

Spring Boot Maven Eklentisi

  • Art─▒lar─▒
  • Eksileri
    • Potansiyel gereksiz Bahar ve Bahar ├ľny├╝kleme ile ilgili s─▒n─▒flar─▒ ekleyin.
 <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>
 

Sende var target/${project.bulid.finalName}-spring-boot.jar .


195







Cevaps─▒z'─▒n cevab─▒n─▒ alarak yeniden bi├žimlendirerek, ┼čunlar─▒ yapt─▒k:

 <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>
 

Daha sonra, bunu a├ž─▒k├ža aramak i├žin bir ┼čey yerine yap─▒n─▒z─▒n do─čal bir par├žas─▒ haline getirmenizi tavsiye ederim. Bunu yap─▒n─▒z─▒n ayr─▒lmaz bir par├žas─▒ yapmak i├žin, bu eklentiyi kendinize ekleyin pom.xml ve package ya┼čam d├Âng├╝s├╝ olay─▒na ba─člay─▒n. Bununla birlikte, bir gotcha bunu assembly:single pom.xml'inize koyarsan─▒z hedefi ├ža─č─▒rman─▒z gerekti─či, bunu da komut sat─▒r─▒ndan elle ├žal─▒┼čt─▒r─▒yorsan─▒z 'assembly: assembly' olarak adland─▒rman─▒z gerekti─čidir.

 <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>
 

134







T├╝m ba─č─▒ml─▒l─▒klar─▒ tek bir kavanoza paketlemek i├žin maven-g├Âlge-eklentisini kullan─▒n. Ana s─▒n─▒f─▒ belirterek ├žal─▒┼čt─▒r─▒labilir bir kavanoz olu┼čturmak i├žin de kullan─▒labilir. Maven-assembly ve maven-jar kullanmaya ├žal─▒┼čt─▒ktan sonra, bu eklentinin ihtiya├žlar─▒ma en uygun oldu─čunu g├Ârd├╝m.

Bu eklentiyi ├Âzellikle ├╝zerine yazmak yerine belirli dosyalar─▒n i├žeri─čini birle┼čtirdi─činden dolay─▒ yararl─▒ buldum. Kavanozlar aras─▒nda ayn─▒ ad─▒ ta┼č─▒yan kaynak dosyalar─▒ oldu─čunda ve eklenti t├╝m kaynak dosyalar─▒n─▒ paketlemeye ├žal─▒┼čt─▒─č─▒nda bu gereklidir.

A┼ča─č─▒daki ├Ârne─če bak─▒n

       <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>
 

96







Uzun zamand─▒r Maven montaj eklentisini kulland─▒m , ancak sorunla ilgili bir ├ž├Âz├╝m bulamad─▒m "already added, skipping" . ┼×imdi, ba┼čka bir eklenti kullan─▒yorum - onejar-maven-plugin . A┼ča─č─▒daki ├Ârnek ( mvn package derleme kavanozu):

 <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>
 

Bu eklenti i├žin depo eklemeniz gerekir:

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

19







Maven-ba─č─▒ml─▒l─▒k eklentisini kullanabilirsiniz, ancak soru, y├╝r├╝t├╝lebilir bir JAR'─▒n nas─▒l olu┼čturulaca─č─▒yd─▒. Bunu yapmak i├žin Matthew Franglen'in cevab─▒nda a┼ča─č─▒daki de─či┼čiklikler yap─▒lmas─▒ gerekir (btw, ba─č─▒ml─▒l─▒k eklentisinin kullan─▒lmas─▒ temiz bir hedeften ba┼člarken daha uzun s├╝rebilir):

 <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>
 

17


2009-10-13





Di─čer sonu├ž JAR'─▒n─▒zdaki di─čer JAR i├žeri─čini ger├žekten yeniden paketlemek istiyorsan─▒z, bir di─čer se├ženek Maven Assembly eklentisidir . Paketi a├žar ve ard─▒ndan her ┼čeyi bir dizine yeniden paketler <unpack>true</unpack> . ├ľyleyse, onu b├╝y├╝k bir JAR'a sokan ikinci bir ge├ži┼čin olacakt─▒.

Ba┼čka bir se├ženek OneJar eklentisidir . Bu, yukar─▒daki yeniden paketleme i┼člemlerinin t├╝m├╝n├╝ bir ad─▒mda ger├žekle┼čtirir.


15







Pom.xml'inize a┼ča─č─▒dakileri ekleyebilirsiniz :

 <build>
<defaultGoal>install</defaultGoal>
<plugins>
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
      <source>1.6</source>
      <target>1.6</target>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.1</version>
    <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <mainClass>com.mycompany.package.MainClass</mainClass>
        </manifest>
      </archive>
    </configuration>
  </plugin>
  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
      <archive>
        <manifest>
          <mainClass>com.mycompany.package.MainClass</mainClass>
        </manifest>
      </archive>
    </configuration>
    <executions>
      <execution>
        <id>make-my-jar-with-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>
</build>
 

Daha sonra konsol ├╝zerinden pom.xml dosyas─▒n─▒n bulundu─ču dizine ge├žmelisiniz. Daha sonra mvn derlemesini ├žal─▒┼čt─▒rman─▒z gerekir: bekar ve ba─č─▒ml─▒l─▒klarla ├žal─▒┼čt─▒r─▒labilir JAR dosyan─▒z umar─▒m derhal kurulur . Cd ./target ile output (target) dizinine ge├žerken ve jar'─▒n─▒z─▒ java-jar mavenproject1-1.0-SNAPSHOT-jar-with-ba─č─▒ml─▒encies.jar ile benzer bir komutla ba┼člat─▒rken kontrol edebilirsiniz .

Bunu Apache Maven 3.0.3 ile test ettim .


13







Bu ba─č─▒ml─▒l─▒klar─▒n her birini, t├╝m ba─č─▒ml─▒l─▒klar─▒ i├žeren, ┼či┼čirilebilir bir ├žal─▒┼čt─▒r─▒labilir kavanoz yapmak isteyen ve hi├žbirinin do─čru ├žal─▒┼čmad─▒─č─▒ sonucuna vard─▒m. Cevap, g├Âlge eklentisi, ├žok kolay ve anla┼č─▒l─▒r.

     <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>
 

Ba─č─▒ml─▒l─▒klar─▒n─▒z─▒n bunun d├╝zg├╝n ├žal─▒┼čmas─▒ i├žin bir derleme veya ├žal─▒┼čma zaman─▒ kapsam─▒na sahip olmas─▒ gerekti─čini unutmay─▒n.

Bu ├Ârnek mkyong.com'dan geldi


12







Sen birle┼čtirmek olabilir maven-shade-plugin ve maven-jar-plugin .

  • maven-shade-plugin Tek bir kavanoz dosyada s─▒n─▒flar─▒ ve t├╝m ba─č─▒ml─▒l─▒klar─▒n─▒ paketleri.
  • maven-jar-plugin ├çal─▒┼čt─▒r─▒labilir kavanozunuzun ana s─▒n─▒f─▒n─▒ belirtmek i├žin yap─▒land─▒r─▒n (bkz . S─▒n─▒f Yolunu Ayarlama , "Kavanozu ├çal─▒┼čt─▒r─▒labilir Yap─▒n" b├Âl├╝m├╝).

POM yap─▒land─▒rmas─▒ ├Ârne─či 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>
 

Sonunda ┼čunu ├ža─č─▒rarak ├žal─▒┼čt─▒r─▒labilir kavanoz olu┼čturun:

 mvn clean package shade:shade
 

11







A┼ča─č─▒daki gibi bir uber kavanozu olu┼čturmak i├žin maven-shade eklentisini kullanabilirsiniz

 <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>
 

10







Ken Liu bence do─čru. Maven ba─č─▒ml─▒l─▒k eklentisi, daha sonra kaynak olarak de─čerlendirebilece─činiz t├╝m ba─č─▒ml─▒l─▒klar─▒ geni┼čletmenize izin verir. Bu, onlar─▒ ana yap─▒ya dahil etmenizi sa─člar . Montaj eklentisinin kullan─▒m─▒, de─či┼čtirilmesi zor olabilen ikincil bir yap─▒ olu┼čturur - benim durumumda ├Âzel manifest giri┼čleri eklemek istedim. Pom'um ┼č├Âyle bitti:

 <project>
 ...
 <build>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <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>
    <targetPath>/</targetPath>
   </resource>
  </resources>
 </build>
 ...
</project>
 

9







─░┼čte Maven i├žin Credit Karma'da kulland─▒─č─▒m─▒z ├žal─▒┼čt─▒r─▒labilir bir jar eklentisi. ─░├ž i├že kavanozlardan s─▒n─▒flar─▒ y├╝kleyebilen bir s─▒n─▒f y├╝kleyiciye sahip bir kavanoz kavanoz olu┼čturur. Bu, ayn─▒ s─▒n─▒f yolunu dev ve prod'da tutman─▒za ve t├╝m s─▒n─▒flar─▒ tek bir imzal─▒ jar dosyas─▒nda tutman─▒za izin verir.

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

Ve i┼čte eklentiyle ilgili ayr─▒nt─▒lar─▒ i├žeren bir blog yaz─▒s─▒ ve neden yapt─▒─č─▒m─▒z: https://engineering.creditkarma.com/general-engineering/new-executable-jar-plugin-available-apache-maven/


9







B├Âyle olmal─▒:

 <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>
 

Ambalaj─▒n a├ž─▒lmas─▒ durumunda, kaynaklar olarak dahil edilmeyece─činden ambalajdan ├ž─▒karma, kaynak olu┼čturma a┼čamas─▒nda olmal─▒d─▒r. Temiz bir paket deneyin ve g├Âreceksiniz.


9







T├╝m dependancy kavanozlar─▒n─▒ paketleyen bir ├žal─▒┼čt─▒r─▒labilir jar dosyas─▒ olarak olu┼čturmak i├žin onejar eklentisini kullan─▒n . Bu, buna benzer olan problemimi ├ž├Âzd├╝. Assembly eklentisi kullan─▒ld─▒─č─▒nda, t├╝m ba─č─▒ml─▒l─▒k kavanozlar─▒n─▒ kaynak klas├Âr├╝ne ├ž─▒kard─▒ ve onlar─▒ bir kavanoz olarak tekrar paketledi, kodumun i├žinde ayn─▒ s─▒n─▒f isimlerindeki t├╝m benzer uygulamalar─▒ yazd─▒. onejar burada kolay bir ├ž├Âz├╝m.


7







Maven-assembly-plugin-2.2.1 ile payla┼č─▒lan montaj dosyas─▒n─▒ bulma sorunu mu ya┼č─▒yorsunuz?

Tan─▒mlay─▒c─▒ / tan─▒mlay─▒c─▒ veya tan─▒mlay─▒c─▒Refler / tan─▒mlay─▒c─▒Ref parametreleri yerine tan─▒mlay─▒c─▒Id yap─▒land─▒rma parametresini kullanmay─▒ deneyin.

─░kisi de ihtiyac─▒n─▒z olan─▒ yapmaz: dosyay─▒ s─▒n─▒f yolunda aray─▒n. Elbette payla┼č─▒lan montaj─▒n maven-assembly-plugin'in s─▒n─▒f yolunda bulundu─ču paketi eklemeniz gerekir (a┼ča─č─▒ya bak─▒n─▒z). Maven 2.x kullan─▒yorsan─▒z (Maven 3.x de─čil), bu ba─č─▒ml─▒l─▒─č─▒ pluginManagement b├Âl├╝m├╝ndeki en ├╝stteki pom.xml dosyas─▒na eklemeniz gerekebilir.

Bkz bu fazla ayr─▒nt─▒ i├žin.

S─▒n─▒f: org.apache.maven.plugin.assembly.io.DefaultAssemblyReader

├ľrnek:

         <!-- 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>
 

7







Di─čerlerini daha ├Ânce de yapt─▒─č─▒n─▒z gibi do─črudan soruyu cevaplamayaca─č─▒m, ancak t├╝m ba─č─▒ml─▒l─▒klar─▒ projenin kavanozuna yerle┼čtirmenin iyi bir fikir olup olmad─▒─č─▒n─▒ ger├žekten merak ediyorum.

Bu noktay─▒ g├Âr├╝yorum (kullan─▒m kolayl─▒─č─▒ / kullan─▒m), ancak ┼čiirinizin kullan─▒m durumuna ba─čl─▒ olarak de─či┼čir (ve alternatifler olabilir (a┼ča─č─▒ya bak─▒n─▒z)).

Tamamen ba─č─▒ms─▒z kullan─▒yorsan─▒z, neden olmas─▒n.

Ancak, projenizi ba┼čka ba─člamlarda kullan─▒rsan─▒z (web uygulamas─▒nda oldu─ču gibi veya di─čer kavanozlar─▒n oturdu─ču bir klas├Âre d├╝┼čt├╝─č├╝n├╝zde), s─▒n─▒f yolunuzda kavanoz kopyalar─▒ olabilir (klas├Ârdekiler, kavanozlardakiler). Belki bir teklif anla┼čmas─▒ de─čil ama genellikle bundan ka├ž─▒n─▒r─▒m.

─░yi bir alternatif:

  • uygulaman─▒z─▒ bir .zip / .war olarak da─č─▒t─▒n: ar┼čiv projenizin kavanozunu ve t├╝m ba─č─▒ml─▒ kavanozlar─▒n─▒ i├žerir;
  • Projenize tek bir giri┼č noktas─▒ (ba┼člamak i├žin tek bir s─▒n─▒f - ba┼čka bir cevaptaki Manifest mekanizmas─▒na bak─▒n) eklemek i├žin dinamik bir s─▒n─▒f y├╝kleyici mekanizmas─▒ kullan─▒n (bkz. Spring veya bunu kolayca kendiniz yapabilirsiniz). ge├žerli s─▒n─▒f yolu, di─čer gerekli t├╝m kavanozlar─▒ i├žerir.

Bunun gibi, sonunda sadece bir bildirge ve ÔÇť├Âzel bir dinamik s─▒n─▒f y├╝kleyici anaÔÇŁ ile projenize ┼č├Âyle ba┼člayabilirsiniz:

 java -jar ProjectMainJar.jar com.stackoverflow.projectName.MainDynamicClassLoaderClass
 

5


2009-12-28





Bu sorunu ├ž├Âzmek i├žin, JAR'─▒ ba─č─▒ml─▒l─▒k JAR'lar─▒ ile birlikte tek bir ├žal─▒┼čt─▒r─▒labilir JAR dosyas─▒na d├Ân├╝┼čt├╝recek olan Maven Assembly Plugin'i kullanaca─č─▒z. Sadece pom.xml dosyan─▒za eklenti yap─▒land─▒rmas─▒n─▒ ekleyin.

 <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>
 

Bunu yapt─▒ktan sonra MAVEN arac─▒n─▒ bu komutla ├žal─▒┼čt─▒rmay─▒ unutma mvn clean compile assembly: single

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


5







Bu yaz─▒da belirtilen a─ča├ž eklentileri kar┼č─▒la┼čt─▒rd─▒m. 2 kavanoz ve t├╝m kavanozlar─▒n bulundu─ču bir dizin haz─▒rlad─▒m. Sonu├žlar─▒ kar┼č─▒la┼čt─▒rd─▒m ve kesinlikle maven-shade-plugin en iyisi. Benim sorunum, birle┼čtirilmesi gereken bir├žok bahar kayna─č─▒n─▒n yan─▒ s─▒ra, jax-rs ve JDBC servislerinin olmas─▒yd─▒. Hepsi, maven-assembly eklentisine k─▒yasla, g├Âlge eklentisi taraf─▒ndan d├╝zg├╝n bir ┼čekilde birle┼čtirildi. Bu durumda, yaylar─▒ kendi kaynaklar klas├Âr├╝n├╝ze kopyalay─▒p bir kez el ile birle┼čtirmedi─činiz s├╝rece ba┼čar─▒s─▒z olur. Her iki eklenti de do─čru ba─č─▒ml─▒l─▒k a─čac─▒n─▒ verir. Test, sa─člama, derleme vb. Gibi ├žok say─▒da kapsam─▒m vard─▒ ve test sa─čland─▒ ve her iki eklenti taraf─▒ndan atland─▒. Her ikisi de ayn─▒ bildiriyi ├╝retti ancak transformat├Ârlerini kullanarak lisanslar─▒ g├Âlge eklentisiyle birle┼čtirebildim. Maven-ba─č─▒ml─▒l─▒k eklentisi ile elbette bu problemler olmaz ├ž├╝nk├╝ kavanozlar ├ž─▒kar─▒lmaz. Ancak baz─▒lar─▒n─▒n da belirtti─či gibi, d├╝zg├╝n ├žal─▒┼čmas─▒ i├žin bir tane ekstra dosya ta┼č─▒man─▒z gerekir. ─░┼čte pom.xml bir snip

             <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}/lib</outputDirectory>
                        <includeScope>compile</includeScope>
                        <excludeTransitive>true</excludeTransitive>
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>false</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.rbccm.itf.cdd.poller.landingzone.LandingZonePoller</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>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <configuration>
                <shadedArtifactAttached>false</shadedArtifactAttached>
                <keepDependenciesWithProvidedScope>false</keepDependenciesWithProvidedScope>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/services/javax.ws.rs.ext.Providers</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.factories</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.handlers</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.schemas</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.tooling</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"/>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer">
                    </transformer>
                </transformers>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
 

3







Komut sat─▒r─▒ndan ├žal─▒┼čt─▒r─▒labilir bir JAR olu┼čturmak i├žin, proje komutundan a┼ča─č─▒daki komutu ├žal─▒┼čt─▒rman─▒z yeterlidir:

 mvn assembly:assembly
 

3







Bu eklentiyi de kullanabilirsiniz, olduk├ža iyi ve kavanozlar─▒m─▒ paketlemek i├žin kullan─▒yorum http://sonatype.github.io/jarjar-maven-plugin/


2







Benim i├žin ├žal─▒┼čan bir ┼čey:

   <plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>unpack-dependencies</id>
        <phase>prepare-package</phase>
        <goals>
          <goal>unpack-dependencies</goal>
        </goals>
        <configuration>
          <outputDirectory>${project.build.directory}/classes</outputDirectory>
        </configuration>
      </execution>

    </executions>
  </plugin>


  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
      <execution>
        <id>unpack-dependencies</id>
        <phase>package</phase>
      </execution>
    </executions>
    <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <classpathPrefix>lib/</classpathPrefix>
          <mainClass>SimpleKeyLogger</mainClass>
        </manifest>
      </archive>
    </configuration>
  </plugin>
 

Ola─čan├╝st├╝ bir durum vard─▒ ├ž├╝nk├╝ ba─č─▒ml─▒l─▒─č─▒m sistem birdi:

 <dependency>
  ..
  <scope>system</scope>
  <systemPath>${project.basedir}/lib/myjar.jar</systemPath>
</dependency>
 

@ User189057 taraf─▒ndan sa─članan kodu de─či┼čikliklerle de─či┼čtirdim: 1) maven-ba─č─▒ml─▒l─▒k eklentisi "haz─▒rla-paket" a┼čamas─▒nda y├╝r├╝t├╝ld├╝ 2) Paketlenmemi┼č s─▒n─▒f─▒ do─črudan "hedef / s─▒n─▒flara" ay─▒klad─▒m


2







Burada en ├žok oyu alan cevab─▒ denedim ve kavanozun ├žal─▒┼čt─▒r─▒labilir olmas─▒n─▒ sa─člad─▒m. Ancak program do─čru ├žal─▒┼čmad─▒. Sebebinin ne oldu─čunu bilmiyorum. Ka├žmaya ├žal─▒┼čt─▒─č─▒mda Eclipse farkl─▒ bir sonu├ž al─▒yorum ancak kavanozdan komut sat─▒r─▒ndan ├žal─▒┼čt─▒rd─▒─č─▒mda farkl─▒ bir sonu├ž al─▒yorum (programa ├Âzg├╝ bir ├žal─▒┼čma zaman─▒ hatas─▒yla ├ž├Âk├╝yor).

OP i├žin de benzer bir gereksinim vard─▒, projem i├žin ├žok fazla (Maven) ba─č─▒ml─▒l─▒k vard─▒. Neyse ki, benim i├žin ├žal─▒┼čan tek ├ž├Âz├╝m kullanmakt─▒ Eclipse . ├çok basit ve ├žok basit. Bu OP i├žin bir ├ž├Âz├╝m de─čil, ayn─▒ gereksinimi olan ancak bir├žok Maven ba─č─▒ml─▒l─▒─č─▒ olan biri i├žin bir ├ž├Âz├╝md├╝r.

1) Proje klas├Âr├╝n├╝ze sa─č t─▒klay─▒n (EclipseÔÇÖde) ve Export

2) Sonra se├žin Java -> Runnable Jar

3) Jar dosyas─▒n─▒n konumunu se├žmeniz istenecek

4) Son olarak, ├žal─▒┼čt─▒rmak istedi─činiz Main y├Ânteminin oldu─ču s─▒n─▒f─▒ se├žin Package dependencies with the Jar file ve se├žip t─▒klay─▒n. Finish


2







Buldu─čum en iyi yol bu:

   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
      <archive>
        <manifest>
        <addClasspath>true</addClasspath>
        <mainClass>com.myDomain.etc.MainClassName</mainClass>
        <classpathPrefix>dependency-jars/</classpathPrefix>
        </manifest>
      </archive>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
            <goal>copy-dependencies</goal>
        </goals>
        <configuration>
            <outputDirectory>
               ${project.build.directory}/dependency-jars/
            </outputDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>
 

Bu yap─▒land─▒rma ile t├╝m ba─č─▒ml─▒l─▒klar i├žinde bulunacakt─▒r /dependency-jars . Uygulamam─▒n Main s─▒n─▒f─▒ yok , yaln─▒zca ba─člam─▒ var, ancak ba─č─▒ml─▒l─▒klar─▒mdan birinin JMX sunucusunu ba┼člatan ve a veya parametresi alan bir Main s─▒n─▒f─▒ ( com.myDomain.etc.MainClassName ) var . B├Âylece uygulamama ┼č├Âyle ba┼člayabildim: start stop

 java -jar ./lib/TestApp-1.0-SNAPSHOT.jar start
 

Ben hepiniz i├žin faydal─▒ olmas─▒n─▒ bekliyorum.


2







Bu da bir se├ženek olabilir, Jar dosyan─▒z─▒ olu┼čturabileceksiniz

 <build>
    <plugins>
        <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>WordListDriver</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>
 

2







Belirli ba─č─▒ml─▒l─▒klar─▒ uber k├╝p├╝nden d─▒┼člama se├ženekleri arayanlar i├žin bu benim i├žin i┼če yaram─▒┼č bir ├ž├Âz├╝md├╝r:

 <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>
 

Bu y├╝zden mvn-assembly eklentisinin bir yap─▒land─▒rmas─▒ de─čil, ba─č─▒ml─▒l─▒─č─▒n bir ├Âzelli─čidir.


2







Zaten milyonlarca cevap var, <mainClass> uygulaman─▒za entryPoint eklemeniz gerekmiyorsa ihtiyac─▒n─▒z olmad─▒─č─▒n─▒ da eklemek istiyorum. ├ľrne─čin, API'ler mutlaka bir main y├Ânteme sahip olmayabilir .

maven eklentisi config

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

in┼ča etmek

 mvn clean compile assembly:single
 

DO─×RULAYIN

 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/
 

2







Pom.xml'e ekle:

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

ve

 <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>
 

Bu kadar. Bir sonraki mvn paketi, t├╝m ba─č─▒ml─▒l─▒k kavanozlar─▒ da dahil olmak ├╝zere, ayr─▒ca bir tane ya─č kavanoz da olu┼čturacakt─▒r.


2







Maven-montaj eklentisi benim i├žin harika ├žal─▒┼čt─▒. Maven ba─č─▒ml─▒l─▒─č─▒ eklentisiyle saatler ge├žirdim ve ├žal─▒┼čmas─▒n─▒ sa─člayamad─▒m. Bunun ana nedeni, yap─▒land─▒rma b├Âl├╝m├╝nde a├ž─▒k bir ┼čekilde, belgelerde a├ž─▒kland─▒─č─▒ gibi dahil edilmesi gereken yapay nesneleri tan─▒mlamak zorunda kalmamd─▒ . Bunun gibi kullanmak istedi─činiz durumlar i├žin bir ├Ârnek var: mvn dependency:copy herhangi bir yapay nesnenin dahil olmad─▒─č─▒ ancak i┼če yaramad─▒─č─▒ yerlerde.


1



─░lgili yay─▒nlar


Da─č─▒t─▒m i├žin bir Android Jar k├╝t├╝phanesi olu┼čturun

Ba─č─▒ml─▒ bir kavanozu yeniden adland─▒rmak m├╝mk├╝n m├╝d├╝r?

Maven ile ├žal─▒┼čt─▒r─▒labilir kavanoz?

Maven kullanarak s├╝r├╝m ba─č─▒ml─▒l─▒─č─▒n─▒n yeniden indirilmesini zorla

Ba─č─▒ml─▒l─▒─č─▒ olan bir kavanoz olu┼čturmak i├žin Gradle'─▒ kullanma

Ansible ile bo┼č bir dosya nas─▒l olu┼čturulur?

IntelliJ IDEA i├žinde SBT kullanarak Uber JAR (Fat JAR) nas─▒l kurulur?

Sava┼č dosyalar─▒n─▒n yerle┼čtirilmesi, g├Âm├╝l├╝ kap ile ├žal─▒┼čt─▒r─▒labilir kavanoz

Belirli bir ┼čema ile bo┼č bir DataFrame nas─▒l olu┼čturulur?

Y├╝r├╝t├╝lebilir bir jar dosyas─▒ nas─▒l yap─▒l─▒r?

Etiketle ilgili di─čer sorular [java]


Python'da bir dize alt dizesini nas─▒l bulabilirim?

JavaScript'te == ve === aras─▒ndaki fark [yinelenen]

Java neden ge├žici alanlara sahip?

jQuery se├žici d├╝zenli ifadeler

Yaln─▒zca say─▒lar─▒ kabul eden bir metin kutusunu nas─▒l yapar─▒m?

JavaScript isset () e┼čde─čeri

TypeScript'te `window` i├žin a├ž─▒k├ža yeni bir ├Âzelli─či nas─▒l ayarl─▒yorsunuz?

JavaScript ile ECMAScript aras─▒ndaki fark nedir?

JQuery ile 'Enter' ile ilgili bir form g├Ânderilsin mi?

Android, TextView'in geni┼čli─čini s─▒n─▒rlama (ve metnin sonuna ├╝├ž nokta ekleme)?