Папка с банками в проекте - PullRequest
14 голосов
/ 11 ноября 2011

Когда я работаю над небольшими настольными проектами, я обычно создавал папку lib в корне моего проекта, где я сохранял все jar-зависимости проекта. Затем я использую Настроить путь сборки -> Библиотеки -> Добавить файлы JAR ... , чтобы вручную добавить все файлы JAR из этой папки в buildpath / classpath. И поскольку Добавление JAR-файлов ... (в отличие от Добавление внешних JAR-файлов ) использует относительные пути, проект переносим, ​​что важно для меня.

Проблема в том, что каждый раз, когда я добавляю или удаляю банку из своей папки lib, мне нужно вручную добавлять / удалять эту банку в настройках пути сборки проекта (и, конечно, я часто забываю это делать).

Есть ли способ просто сообщить Eclipse, что «это папка, в которой я храню все мои банки. Пожалуйста, добавьте все банки оттуда автоматически в buildpath / classpath»? Я пытался рассматривать эту папку как папку класса (Add class folder...), но она не работает таким образом: (.

P.S. Я знаю об интеграции Maven и Eclipse-Maven, но я хочу, чтобы мой небольшой проект был простым (интеграция Maven иногда расстраивает, поэтому я предпочитаю избегать этого в этих проектах), поэтому, пожалуйста, не предлагайте это в ответе. Также, как я уже упоминал, это настольные проекты, поэтому в моем проекте нет папки WEB-INF/lib, которая обычно автоматически обрабатывается плагинами Java EE.

Ответы [ 5 ]

4 голосов
/ 03 декабря 2011

вы можете попробовать с контейнером classpath, посмотрите здесь для примера.

Взгляните также на контейнер Apache IvyDE classpath .

Однако добавить новую библиотеку в путь к классам просто и быстро, как:

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

РЕДАКТИРОВАТЬ

Этот легкий плагин должен делать именно то, что вы хотите!

2 голосов
/ 11 ноября 2011

Я не слишком уверен, но разве у вас не может быть групповых символов в вашем классе?Таким образом, вы можете просто отредактировать файл .classpath для этого проекта Eclipse и использовать * в определенной папке ... Я не пробовал, я спешу, но это моя идея ... не знаю, работает ли

РЕДАКТИРОВАТЬ Вот что вы можете найти полезным: Как использовать подстановочный знак в пути к классам для добавления нескольких банок?

По сути, просто отредактируйте файл .classpath, которыйEclipse хранит настройки пути к классам для проекта

1 голос
/ 03 декабря 2011

Так что да, я делал это раньше: Используйте Apache Ant и укажите конфигурацию ant, соответствующую вашему пути сборки, и eclipse должна иметь возможность использовать ее с использованием существующей опции ant build. Вот пример файла муравья, который вы можете иметь:

<?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>

И вот ссылка с кем-то, имеющим проблему similair, использующим муравья для решения своих проблем с classpath. Ant переносим, ​​поэтому его можно настроить где угодно, и вы также можете использовать глобальные переменные, чтобы поддерживать согласованность всех систем, или просто использовать относительные пути. И есть также плагин Eclipse Ant

1 голос
/ 29 ноября 2011

Я думаю, что лучше всего использовать Gradle.Это не имеет разочарования Maven с Eclipse.Если вы используете STS, он поставляется в комплекте с Gradle.

См. Ссылку

0 голосов
/ 10 сентября 2015

просто попробуйте , включая

<classpathentry kind="lib" path="lib/spring/4.2.1" including="*.jar"/>
...