现在我已经搜索了一些问题但我还没有找到答案。
我有一个带有一些外部Jars的java eclipse项目,比如SWT jar。现在这个项目是一个家庭作业,我已经工作了一段时间。我需要上交作业,教授将审查代码,他也将在本地执行。
那么如何通过保持所有依赖关系完整来导出项目。我当然无法提交JAR文件。我已经尝试将项目导出为“文件系统”。但是它没有保留外部依赖关系。
有办法做到这一点吗?
感谢。
答案 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>
标志的javac
和java
命令来指定依赖项的位置。