Java:在eclipse中导出java项目(而不是JAR)时包含外部jar

时间:2016-11-22 21:45:15

标签: java jar

现在我已经搜索了一些问题但我还没有找到答案。

我有一个带有一些外部Jars的java eclipse项目,比如SWT jar。现在这个项目是一个家庭作业,我已经工作了一段时间。我需要上交作业,教授将审查代码,他也将在本地执行。

那么如何通过保持所有依赖关系完整来导出项目。我当然无法提交JAR文件。我已经尝试将项目导出为“文件系统”。但是它没有保留外部依赖关系。

有办法做到这一点吗?

感谢。

2 个答案:

答案 0 :(得分:1)

如果您不使用Maven等管理依赖工具,则无法选择:您必须提供使项目编译所需的所有jar。
在这种情况下,如果您的老师有ANT,那么ant构建将是组织依赖关系的一种干净方式 否则,手动解决方案是将所有外部依赖项添加到项目的文件夹中。例如:libs。 在此libs文件夹中,添加所有外部jar。 然后zip / tar项目。教授只需要配置项目JDK就可以了。

答案 1 :(得分:1)

有一种方法,使用Maven,下载POM中指定的必需依赖项。这只有在您需要的依赖项位于某个Maven存储库(如中央)或者它们安装到本地存储库时才有效。

只需添加一个配置maven-dependency-plugin的插件元素到您的POM。这将在编译阶段将所有依赖项复制到某个文件夹。在这种情况下:target / lib。

Button button = (Button) LayoutInflater.from(context).inflate(R.layout.button, tr, false);

如果您正在制作一个可运行的JAR,您还可以配置maven-jar-plugin,将复制到target / lib的依赖项添加到清单中的Class-Path元素,并使用指定的主类。

<project>
    ...
    <build>
        ...
        <plugins>
            ...
            <!-- For copying dependencies into target folder -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        ...
    </build>
    ...
</project>

如果使用Maven是不可能的,请下载JAR并将它们放在项目的lib文件夹中。如果你告诉它在哪里看,IDE将能够选择它们。或者只使用带有<!-- For including dependencies in target folder in JAR manfiest Class-Path --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>Main</mainClass> </manifest> </archive> </configuration> </plugin> 标志的javacjava命令来指定依赖项的位置。