Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用maven创建可执行jar_Java_Maven_Executable Jar - Fatal编程技术网

Java 使用maven创建可执行jar

Java 使用maven创建可执行jar,java,maven,executable-jar,Java,Maven,Executable Jar,我正在尝试使用maven创建一个可执行jar。我有一个java web项目,我使用m2e eclipse插件将其转换为maven。为了创建一个可运行的jar,我的pom.xml按照以下方式配置 <build> <sourceDirectory>src</sourceDirectory> <resources> <resource> <directory>src</direct

我正在尝试使用maven创建一个可执行jar。我有一个java web项目,我使用m2e eclipse插件将其转换为maven。为了创建一个可运行的jar,我的pom.xml按照以下方式配置

<build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>

    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>

    <!--  to create a runnable jar -->  
      <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.test.main</mainClass> // main being main.java which has my main method
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
    </plugin>

    </plugins>
  </build>

src
src
**/*.爪哇
maven编译器插件
3.1
1.7
1.7
maven汇编插件
com.test.main//main是main.java,它有我的main方法
带有依赖项的jar

然后我在(编辑配置)选项卡中编辑了->运行方式->我在目标选项卡中添加了“包”。该项目构建成功,但当我尝试运行jar时,我一直得到“找不到主清单”,哪里出了问题?

我认为您错过了将插件绑定到生命周期阶段的机会:


[...]
[...]
maven汇编插件
2.4
带有依赖项的jar
com.test.main//main是main.java,它有我的main方法
组装
包裹
单一的
[...]

它工作了,但它生成了一个70MB的文件,我真的不知道这是什么,如果您能向我解释一下,我将非常感激。请尝试运行
mvn dependency:tree
以查看项目的所有依赖项。您正在将所有这些内容绑定到一个jar中(您可以执行
jar-tf
),以查看所有空间的去向。您可以尝试Maven Shade插件,该插件可以删除未使用的.class文件。
<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
             <manifest>
                <mainClass>com.test.main</mainClass> // main being main.java which has my main method
             </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> <!-- this is used for inheritance merges -->
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      [...]
</project>