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

Java:在eclipse中导出Java项目(而不是JAR)时包含外部JAR,java,jar,Java,Jar,现在我已经为我的问题找了些时间,但还没有找到答案 我有一个JavaEclipse项目,其中包含一些外部JAR,比如SWT JAR。现在这个项目是一个家庭作业项目,我已经做了一段时间了。我需要交作业,教授会检查代码,他也会在本地执行 那么,如何通过保持所有依赖关系的完整性来导出项目呢。我当然不能提交JAR文件。我已经尝试将项目导出为“文件系统”。但是,它并没有保留外部依赖关系 有办法做到这一点吗 谢谢。如果您不使用Maven等管理依赖性工具,那么您别无选择:您必须提供使项目编译所需的所有JAR。

现在我已经为我的问题找了些时间,但还没有找到答案

我有一个JavaEclipse项目,其中包含一些外部JAR,比如SWT JAR。现在这个项目是一个家庭作业项目,我已经做了一段时间了。我需要交作业,教授会检查代码,他也会在本地执行

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

有办法做到这一点吗


谢谢。

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

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

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

只需将配置maven依赖插件的插件元素添加到POM中。这将在编译阶段将所有依赖项复制到某个文件夹。在本例中:target/lib

<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>

...
...
...
org.apache.maven.plugins
maven依赖插件
复制依赖项
编译
复制依赖项
${project.build.directory}/lib
假的
假的
真的
...
...
如果您正在制作一个可运行的JAR,那么还可以配置maven JAR插件,将复制到target/lib的依赖项添加到清单中的Class Path元素,并使用指定的主类

<!-- 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>

org.apache.maven.plugins
maven jar插件
真的
解放党/
主要


如果无法使用Maven,请下载JAR并将其与项目一起放在lib文件夹中。如果您告诉IDE在哪里查找,它将能够获取这些信息。或者只需使用带有
-cp
标志的
javac
java
命令来指定依赖项的位置。

使用Maven,可以下载POM中指定的所需依赖项。只有当您需要的依赖项位于某个Maven存储库(如central)上,或者它们安装到您的本地存储库中时,这才有效

只需将配置maven依赖插件的插件元素添加到POM中。这将在编译阶段将所有依赖项复制到某个文件夹。在本例中:target/lib

<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>

...
...
...
org.apache.maven.plugins
maven依赖插件
复制依赖项
编译
复制依赖项
${project.build.directory}/lib
假的
假的
真的
...
...
如果您正在制作一个可运行的JAR,那么还可以配置maven JAR插件,将复制到target/lib的依赖项添加到清单中的Class Path元素,并使用指定的主类

<!-- 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>

org.apache.maven.plugins
maven jar插件
真的
解放党/
主要


如果无法使用Maven,请下载JAR并将其与项目一起放在lib文件夹中。如果您告诉IDE在哪里查找,它将能够获取这些信息。或者只需使用带有
-cp
标志的
javac
java
命令来指定依赖项的位置。

我已尝试将项目转换为Maven项目。然后从构建路径中删除了外部依赖项,我只在pom.xml中定义了一个依赖项。我将其导出为文件系统,然后将其重新导入。但是在我重新导入之后,它找不到SWT jar。这很奇怪,我不明白为什么。因此,我正在探索其他选项。使用Maven,您将不会直接在项目中添加SWT jar,也不需要导出项目。既然已经足够了,就照原样用吧。自由基