我有一个模块,我使用maven-assembly-plugin创建一个可执行的jar与依赖关系。当我运行安装,插件会预先考虑罐子名之前的项目(“附近”)的名称和所有jar内容,即:maven-assembly-plugin预先考虑类路径
$ jar -tvf vicinity-confirm-assets.jar | more
0 Tue Jan 20 17:18:10 EST 2015 META-INF/
213 Tue Jan 20 17:18:08 EST 2015 META-INF/MANIFEST.MF
0 Tue Jan 20 17:18:10 EST 2015 vicinity/
0 Thu Nov 13 20:52:16 EST 2014 vicinity/META-INF/
134 Thu Nov 13 20:52:14 EST 2014 vicinity/META-INF/MANIFEST.MF
0 Thu Nov 13 20:52:06 EST 2014 vicinity/org/
0 Thu Nov 13 20:52:10 EST 2014 vicinity/org/boon/
0 Thu Nov 13 20:52:10 EST 2014 vicinity/org/boon/cache/
0 Thu Nov 13 20:52:10 EST 2014 vicinity/org/boon/collections/
0 Thu Nov 13 20:52:10 EST 2014 vicinity/org/boon/concurrent/
...
0 Tue Jan 20 17:17:50 EST 2015 vicinity/META-INF/maven/com.thingy.webapp/confirmassets/
2208 Tue Jan 20 17:17:44 EST 2015 vicinity/META-INF/maven/com.thingy.webapp/confirmassets/pom.xml
127 Tue Jan 20 16:25:22 EST 2015 vicinity/META-INF/maven/com.thingy.webapp/confirmassets/pom.properties
这里是插件的xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.thingy.webapp.confirmassets.ToolbarResourcesUrlTester</mainClass>
</manifest>
</archive>
<descriptors>
<descriptor>src/main/resources/dist.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这里是dist.xml:
<?xml version='1.0' encoding='UTF-8'?>
<assembly>
<id>confirm-assets</id>
<formats>
<format>jar</format>
</formats>
<dependencySets>
<dependencySet>
<scope>runtime</scope>
<unpack>true</unpack>
<unpackOptions>
<excludes>
<exclude>**/LICENSE*</exclude>
<exclude>**/README*</exclude>
</excludes>
</unpackOptions>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources/META-INF/services</directory>
<outputDirectory>META-INF/services</outputDirectory>
</fileSet>
</fileSets>
</assembly>
ETA:在 “附近” 前面加上从父POM的<build><finalName>vicinity</finalName>...</build>
到来。但是将这个前置到jar中包含的每个文件和依赖项是没有意义的。我试着用模块的pom中空的<finalName></finalName>
标签覆盖,但是后来我得到了一个破折号。我如何摆脱这一切,只是在罐子里包含正确命名的内容?
ALSO:我遇到的问题是,当我尝试在命令行中运行我的主类,我得到:
$ java -jar vicinity-confirm-assets.jar
Error: Could not find or load main class com.thingy.webapp.confirmassets.ToolbarResourcesUrlTester
此外,还有两个MANIFEST.MF文件。
$ jar -tvf vicinity-confirm-assets.jar | grep MANI
213 Tue Jan 20 18:07:26 EST 2015 META-INF/MANIFEST.MF
134 Thu Nov 13 20:52:14 EST 2014 vicinity/META-INF/MANIFEST.MF
第一招:
Manifest-Version: 1.0
Built-By: barclaydunn
Build-Jdk: 1.6.0_65
Created-By: Apache Maven 3.1.1
Main-Class: com.thingy.webapp.confirmassets.ToolbarResourcesUrlTest
er
Archiver-Version: Plexus Archiver
第二:
Manifest-Version: 1.0
Built-By: slandelle
Build-Jdk: 1.7.0_65
Created-By: Apache Maven 3.2.2
Archiver-Version: Plexus Archiver
我猜有两个原因,而预谋从何而来,事实证明这是一个孩子模块。第二个来自父母,我猜测。
我想做一些不能/不应该做的事吗?