繁体   English   中英

Maven,Jar不包含MAIN项目jar

[英]Maven, Jar does not contain the MAIN project jar

我正在使用Maven构建我的项目。 我想创建包括一些依赖项的程序集jar,因此我编写了自定义程序集描述符。

POM文件

    <plugin> 
      <artifactId>maven-assembly-plugin</artifactId>  
      <configuration> 
        <archive> 
          <manifest> 
            <mainClass>com.guavus.exporter.Exporter</mainClass> 
          </manifest> 
        </archive>  
        <descriptors> 
          <descriptor>/Users/archit.thakur/Documents/Code_dev_cdn_mapreduce/exporter/src/main/assembly/configurator.xml</descriptor>  
          <!--    <descriptorRef>jar-with-dependencies</descriptorRef>      --> 
        </descriptors>  
        <finalName>Exporter-${project.version}</finalName>  
        <appendAssemblyId>false</appendAssemblyId> 
      </configuration>  
      <executions> 
        <execution> 
          <id>make-assembly</id>  
          <phase>package</phase>  
          <goals> 
            <goal>single</goal> 
          </goals> 
        </execution> 
      </executions> 
    </plugin>  
    <plugin> 
      <artifactId>maven-jar-plugin</artifactId>  
      <version>2.3.1</version>  
      <executions> 
        <execution> 
          <id>default-jar</id>  
          <phase>none</phase> 
        </execution> 
      </executions> 
    </plugin> 

组装说明:

        <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2        http://maven.apache.org/xsd/assembly-1.1.2.xsd">  
          <id>dep</id>  
          <formats> 
            <format>jar</format> 
          </formats>  
          <dependencySets> 
            <dependencySet> 
              <outputDirectory>${project.artifactId}</outputDirectory>  
              <unpack>true</unpack>  
              <useProjectArtifact>true</useProjectArtifact>  
              <includes> 
                <include>log4j:log4j</include>  
                <include>org.slf4j:slf4j-api</include>  
                <include>ch.qos.logback:logback-access</include>  
                <include>ch.qos.logback:logback-classic</include>  
                <include>ch.qos.logback:logback-core</include> 
              </includes> 
            </dependencySet> 
          </dependencySets> 
        </assembly>

问题是,现在它正在创建仅具有依赖项jar的jar。 而不是用我的代码制作jar并将其包含在最终的jar中。

尝试使用Shade插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.2.2</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.app.MyMainClass</mainClass>
                            </transformer>
                        </transformers>
                        <filters>
                            <filter>
                                <artifact>org.eclipse.swt.win32.win32:x86</artifact>
                                <excludes>
                                    <exclude>META-INF/eclipse.inf</exclude>
                                    <exclude>META-INF/ECLIPSE.RSA</exclude>
                                    <exclude>META-INF/ECLIPSE.SF</exclude>
                                </excludes>
                            </filter>
                        </filters>
                    </configuration>
                </execution>
            </executions>
            <configuration>
                <encoding>${project.build.sourceEncoding}</encoding>
            </configuration>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>

    </resources>
</build>
<fileset>...my classes... </fileset>

在程序集配置器/描述符中添加标签可解决此问题。

感谢此评论:

也许尝试为target / classes目录中的所有内容添加一个fileSet? (不记得对不起的POM变量引用了……)– 查理 1月22日7:21

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM