我有一个项目,包含一个单独的模块,和一些依赖。 我想在一个单独的目录中创建一个JAR,其中包含编译后的模块。此外,我希望在我的模块旁边有依赖项。

无论我如何扭曲IntelliJ的“构建JAR”过程,我的模块的输出都是空的(除了一个META-INF文件)。


当前回答

您可能想看一看Maven (http://maven.apache.org)。您既可以将它用作应用程序的主要构建过程,也可以仅通过Edit Configurations对话框执行某些任务。在Maven中创建一个模块的JAR的过程是相当简单的,如果您希望它在一个可自行执行的JAR中包含所有依赖项,那么这个过程也是非常简单的。

如果您以前从未使用过Maven,那么您应该阅读Better Builds With Maven。

其他回答

8.1.3想法

Jar是可以的,因为在'output'目录(project/out/production//)中有编译输出

我猜,你必须在构建jar之前运行'make'

对于依赖项,只需检查“show library”并选择您想要的。

我最近遇到了这个问题,如果之前的解决方案或环节缺少细节,我认为这些步骤很容易遵循。

如何使用IntelliJ IDEA 14.1.5创建一个。jar:

文件>保存全部。 用main方法运行驱动程序或类。 文件>项目结构。 选择标签“Artifacts”。 点击窗口顶部附近的绿色加号按钮。 从添加下拉菜单中选择JAR。选择“From modules with dependencies” 选择主类。 单选按钮应该选择“提取到目标JAR”。按下OK。 选中“基于生成构建”复选框 按应用并确定。 从主菜单中,选择build下拉菜单。 选择选项构建构件。

这可能有点晚,但我设法解决它的方式-> 用winrar打开并删除ECLIPSEF。RSA和ECLIPSEF。SF在META-INF文件夹中,并且在MANIFEST.MF中放置“Main-class: main_class_name”(没有“.class”)。确保你在最后一行之后按了两次“Enter”,否则它将不起作用。

在Maven中,你可以使用这个插件:

 <build>
    <plugins>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>[path you class main]</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase> 
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我试图从一个多模块的Kotlin应用程序构建一个jar,并得到了臭名昭著的“没有主清单属性”错误。在src/main/resources中创建清单目录也不能工作。

相反,它直接在src中创建:src/META-INF/MANIFEST.MF。