项目中的罐子的文件夹

时间:2011-11-11 19:26:40

标签: eclipse configuration classpath buildpath

当我处理小型桌面项目时,我曾经在项目的根目录中创建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插件自动处理。

4 个答案:

答案 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。

See the link

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