對不起,在這裏聽起來很無知,但我是Maven的新手,並且一直對我的頭反抗,我敢肯定它很簡單。maven assembly插件問題開始
的docs說:
[...]一個項目可能產生包含在根目錄下,在一個lib /目錄下的運行時依賴一個項目的JAR神器一個ZIP組件和shell腳本啓動一個獨立的應用程序。
這就是究竟是我想幹什麼!但我似乎無法做到這一點。
我POM如下:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.anearalone</groupId>
<artifactId>myapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
[...]
<build>
<finalName>myapp</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<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>
<descriptors>
<descriptor>src/main/assemble/dist.xml</descriptor>
</descriptors>
<archive>
<manifest>
<mainClass>com.anearalone.myapp.CLI</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
和引用dist.xml看起來是這樣的:
<assembly>
<id>dist</id>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<outputDirectory>/</outputDirectory>
<source>src/main/bin/arkify.sh</source>
<fileMode>755</fileMode>
</file>
</files>
<dependencySets>
<dependencySet>
<useProjectArtifact>false</useProjectArtifact>
<includes>
<include>*:jar</include>
</includes>
<outputDirectory>/lib</outputDirectory>
</dependencySet>
<dependencySet>
<useProjectArtifact>true</useProjectArtifact>
<includes>
<include>com.anearalone:myapp:jar:0.0.1-SNAPSHOT</include>
</includes>
<outputDirectory>/</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
這實現了我想在壓縮文件的佈局(雖然我很確定我沒有以正確的方式到達那裏),但我在target/
(一個在zip存檔中,另一個在根目錄中)中有兩個罐子,並且它們都不包含我的mainClass條目在結果MANIFEST.MF
中。
如果我改變project.packaging
爲「POM」,我認爲可能是正確的,當然額外的罐子(在target/
根消失了,但我得到這些警告:
[WARNING] Cannot include project artifact: com.anearalone:myapp:pom:0.0.1-SNAPSHOT; it doesn't have an associated file or directory.
[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o 'com.anearalone:myapp'
.. 。其實我心裏想的工件不在存檔,還有沒有加入到MANIFEST.MF
條目。
任何人有時間來幫幫忙初學者?
啊,完美!我應該從[使用頁面](http://maven.apache.org/plugins/maven-assembly-plugin/usage.html)的前幾行中推斷出這一點。非常感謝! – JStroop 2011-04-19 13:25:46