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