Tôi có một ứng dụng Java trên máy tính để bàn được tạo bằng Maven 2 (nhưng tôi có thể nâng cấp lên Maven 3 nếu có ích) với một số phụ thuộc nguồn mở. Bây giờ tôi đang cố gắng để gói nó như là một độc lập để làm cho nó có sẵn cho người dùng cuối mà không cần phải cài đặt maven hoặc bất cứ điều gì khác.Làm thế nào để bạn tạo một ứng dụng độc lập với các phụ thuộc còn nguyên vẹn bằng Maven?
Tôi đã sử dụng thành công maven-assembly-plugin để xây dựng một lọ chứa tất cả các phụ thuộc nhưng đây không thực sự là điều tôi muốn vì khi sử dụng thư viện LGPL, bạn có nghĩa là phân phối lại các thư viện bạn đang dùng.
Tôi muốn Maven xây dựng một kho chứa jar với mã của tôi và MANIFEST.MF
đề cập đến các lọ khác mà tôi cần cùng với các lọ khác. Điều này có vẻ như thực hành tiêu chuẩn nhưng tôi không thể nhìn thấy làm thế nào để làm điều đó.
Dưới đây là một chiết xuất từ pom tôi
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<compilerVersion>1.6</compilerVersion>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.company.widget.Main</mainClass>
<packageName>com.company.widget</packageName>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.company.widget.Main</mainClass>
<packageName>com.company.widget</packageName>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
EDIT: Taken trên Kals ý tưởng
tạo ra một tập tin gọi là descriptor.xml
<?xml version="1.0" encoding="UTF-8"?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>distribution</id>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<scope>runtime</scope>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
</dependencySet>
</dependencySets>
</assembly>
và pom chứa:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
<archive>
<manifest>
<mainClass>com.company.widget.cmdline.Main</mainClass>
<packageName>com.company.widget</packageName>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Bây giờ duy trì bình và đặt tất cả trong thư mục lib, bao gồm mã của riêng tôi
Bạn có thể phân phối ứng dụng của mình dưới dạng ứng dụng _simple_ WebStart, mà bạn không cần máy chủ ứng dụng JEE, chỉ cần một JNLP. –
khmarbasise thú vị, tôi nghĩ rằng đây là giai đoạn sau khi mặc dù –