当我处理小型桌面项目时,我曾经在项目的根目录中创建lib
文件夹,在那里我保留了所有项目的jar依赖项。然后我使用配置构建路径 - > 图书馆 - > 添加JAR ... 以手动将此文件夹中的所有jar添加到buildpath / classpath。因为添加JAR ... (与添加外部JAR 不同)使用相对路径,项目是可移植的,这对我来说很重要。
问题是,每次我从lib
文件夹中添加或删除jar时,我都需要在项目构建路径设置中手动添加/删除此jar(当然我经常忘记这样做)。
有没有办法告诉Eclipse“这是我保存所有罐子的文件夹。请将所有罐子自动添加到buildpath / classpath”?我试图将此文件夹视为类文件夹(Add class folder...
),但它不起作用:(。
P.S。我知道Maven和Eclipse-Maven集成,但我想保持我的小项目很简单(Maven集成有时令人沮丧,所以我宁愿在这些项目中避免它),所以请不要在回答中提出这个建议。另外正如我所提到的,这些是桌面项目,因此我的项目中没有WEB-INF/lib
文件夹,通常由Java EE插件自动处理。
答案 0 :(得分:4)
您可以尝试使用类路径容器,看看here作为示例。
另请查看Apache IvyDE classpath container。
但是,在类路径中添加新库非常简单快捷:
Right click on it ---> Build Path ---> Add To Build Path
编辑
This轻量级插件应该完全符合您的要求!
答案 1 :(得分:2)
我不太确定,但你不能在你的类路径中有通配符吗?这样你就可以编辑你的Eclipse项目的.classpath文件并在特定文件夹中使用* ...我没有尝试过,我很匆忙,但这是我的想法......不知道是否有效
在这里编辑你可以找到有用的东西: How to use a wildcard in the classpath to add multiple jars?
基本上,只需编辑.classpath
文件,这是Eclipse存储项目的类路径设置的地方
答案 2 :(得分:1)
我认为最好是使用Gradle。这并没有Maven与Eclipse的挫败感。如果您使用STS,它会预先捆绑Gradle。
答案 3 :(得分:1)
所以我之前做过这个: 使用Apache Ant并指定适合您的构建路径的ant配置,eclipse应该能够在使用现有ant构建选项时使用它。 以下是您可能拥有的示例ant文件:
<?xml version="1.0"?>
<project name="Demo Project" basedir="." default="package">
<!-- ================================================================= -->
<!-- C O N F I G U R A T I O N -->
<!-- ================================================================= -->
<!--
Access the environment properties
-->
<property environment="env" />
<!--
TODO: Access the environment properties with a prefix of "env".
-->
<!--
Additional 3rd-party tools
-->
<property name="ant.home" value="${env.ANT_HOME}"/>
<property name="junit.home" value="${env.JUNIT_HOME}"/>
<property name="jmock.home" value="${env.JMOCK_HOME}"/>
<!--
Project folders
-->
<property name="project.home" value="${basedir}" />
<property name="bin.dir" value="${project.home}/bin" />
<property name="dist.dir" value="${project.home}/dist" />
<property name="dist.file" value="${dist.dir}/lab03.jar" />
<property name="col.file" value="${dist.dir}/lab03-col.jar" />
<property name="src.dir" value="${project.home}/src" />
<property name="lib.dir" value="${project.home}/lib" />
<!--
TODO: Define the classpath to be used during compilation. This should
consist of all of the JAR files in the ${lib.dir} folder.
-->
<path id="project.class.path">
<path location="${dist.file}" />
<path location="${bin.dir}" />
<fileset dir="${junit.home}">
<include name="junit-4.7.jar"/>
</fileset>
<fileset dir="${jmock.home}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${ant.home}/lib">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<!--
TODO: Define the classpath to be used during execution. This should
consist of all of the JAR files in the ${lib.dir} folder as well as
${dist.file}.
-->
<path id="execution.class.path">
<path location="${bin.dir}" />
<path location="${bin.dir}/MyPath1/MyPath" />
<path location="${bin.dir}/MyPath1/MyPath/impl" />
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- ================================================================= -->
<!-- C L E A N -->
<!-- ================================================================= -->
<target name="clean"
description="Clean all build products">
<delete dir="${bin.dir}" />
<delete dir="${dist.dir}" />
</target>
<!-- ================================================================= -->
<!-- C O M P I L E -->
<!-- ================================================================= -->
<target name="compile"
depends="clean,init"
description="Compiles the application code">
<!--
TODO: Add the javac task. It should compile everything in ${src.dir}
and place the output in ${bin.dir}. The classpath should refer to the
"project.class.path" defined above.
-->
<javac srcdir="${src.dir}"
destdir="${bin.dir}">
<classpath refid="project.class.path" />
</javac>
</target>
<!-- ================================================================= -->
<!-- E N V -->
<!-- ================================================================= -->
<target name="env"
description="Displays information about the build">
<echo message="src.dir..........${src.dir}" />
<echo message="lib.dir..........${lib.dir}" />
<echo message="bin.dir..........${bin.dir}" />
<echo message="dist.dir.........${dist.dir}" />
<echo message="dist.file........${dist.file}" />
<echo message="col.file.........${col.file}" />
<echo message="reports.dir......${reports.dir}" />
</target>
<!-- ================================================================= -->
<!-- I N I T -->
<!-- ================================================================= -->
<target name="init"
depends="env"
description="Initializes the environment">
<mkdir dir="${bin.dir}" />
<mkdir dir="${dist.dir}" />
</target>
<!-- ================================================================= -->
<!-- P A C K A G E -->
<!-- ================================================================= -->
<target name="package"
depends="compile"
description="Creates the application distribution file">
<!--
TODO: Create a JAR file. The target JAR should be ${dist.file} and it
should contain everything from ${bin.dir}.
-->
<jar destfile="${dist.file}"
basedir="${bin.dir}"
excludes="**/*Test*.class"
/>
</target>
<!-- ================================================================= -->
<!-- P A C K A G E - C O L -->
<!-- ================================================================= -->
<target name="package-col"
depends="compile"
description="Creates the file to be submitted to COL.">
<jar destfile="${col.file}">
<fileset dir="${project.home}"
includes="src/**/*.java" />
<fileset dir="${project.home}"
includes="lib/**/*.jar" />
<fileset dir="${project.home}"
includes="build.xml" />
</jar>
</target>
<!-- ================================================================= -->
<!-- R U N -->
<!-- ================================================================= -->
<target name="run"
depends="package"
description="Executes the test file">
<java classname="MyPath1.MyPath.FileScanner">
<classpath refid="execution.class.path" />
<arg value="file:///" />
</java>
</target>
</project>
AND这是一个link,其中有人使用ant来解决他的类路径问题。 Ant是可移植的,因此它实际上可以在任何地方设置,您也可以使用全局变量来保持所有系统的一致性或仅使用相对路径。还有an eclipse ant plugin