0

プロジェクトのビルドにmavenを使用しています。いくつかの依存関係を含むアセンブリ jar を作成したかったので、カスタム アセンブリ記述子を作成しました。

POM.XML

    <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に含めます。

4

2 に答える 2

1

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>
于 2013-01-22T05:55:51.240 に答える
0
<fileset>...my classes... </fileset>

アセンブリ コンフィギュレーター/記述子にタグを追加すると、問題が解決しました。

このコメントのおかげで:

target/classes ディレクトリ内のすべてのファイルセットを追加してみてください。(POM変数参照を覚えていないでください。申し訳ありません...) – Charlie 1月22日7:21

于 2013-01-28T07:56:20.017 に答える