14

lib当我处理小型桌面项目时,我曾经在项目的根目录中创建文件夹,其中保存了所有项目的 jar 依赖项。然后我使用Configure Build Path -> Libraries -> Add JARs...手动将此文件夹中的所有 jar 添加到 buildpath/classpath。而且因为Add JARs...(与Add external JARs不同)使用相对路径,所以该项目是可移植的,这对我来说很重要。

问题是每次我从我的lib文件夹中添加或删除一个 jar 时,我都需要在项目构建路径设置中手动添加/删除这个 jar(当然我经常忘记这样做)。

有没有办法只通知 Eclipse “这是我保存所有 jar 的文件夹。请自动将所有 jar 从那里添加到 buildpath/classpath”?我试图将此文件夹视为类文件夹(Add class folder...),但它不起作用:(。

PS 我知道 Maven 和 Eclipse-Maven 集成,但我想保持我的小项目的简单(Maven 集成有时令人沮丧,所以我更愿意在这些项目中避免它),所以请不要在回答中建议这个。同样正如我所提到的,这些是桌面项目,因此WEB-INF/lib我的项目中没有通常由 Java EE 插件自动处理的文件夹。

4

5 回答 5

4

您可以尝试使用类路径容器,看看这里的例子。

还请查看Apache IvyDE 类路径容器

但是,将新库添加到类路径既简单又快速,如下所示:

Right click on it ---> Build Path ---> Add To Build Path

编辑

这个轻量级插件应该完全符合您的要求!

于 2011-12-02T21:16:10.787 回答
2

我不太确定,但你的类路径中不能有通配符吗?这样你就可以为那个 Eclipse 项目编辑你的 .classpath 文件并在一个特定的文件夹中使用 * ......我没有尝试过,我很着急,但这是我的想法......不知道是否有效

这里的编辑是你可能会发现有用的东西: How to use a wildcard in the classpath to add multiple jars?

基本上,只需编辑您的.classpath文件,这是 Eclipse 存储项目的类路径设置的地方

于 2011-11-11T19:59:03.227 回答
1

我认为最好的方法是使用 Gradle。这没有 Maven 与 Eclipse 的挫败感。如果您使用 STS,它会预先捆绑 Gradle。

见链接

于 2011-11-29T19:11:01.200 回答
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>

并且这是与使用 ant 解决他的类路径问题的类似问题的人的链接。Ant 是可移植的,因此它实际上可以在任何地方设置,您还可以使用全局变量来保持所有系统的一致性,或者只使用相对路径。还有一个eclipse ant插件

于 2011-12-02T23:17:18.750 回答
-1

试着包括

<classpathentry kind="lib" path="lib/spring/4.2.1" including="*.jar"/>
于 2015-09-10T13:32:36.120 回答