Папка с банками в проекте
Когда я работаю над небольшими настольными проектами, я использовал для создания папки lib
в корне моего проекта, где я сохраняю все зависимости jar проекта. Затем я использую Configure Build Path → Libraries → Add JARs..., чтобы вручную добавить все банки из этой папки в путь buildpath/classpath. И поскольку Add JARs... (в отличие от добавления внешних JAR) использует относительные пути, проект переносим, что важно для меня.
Проблема в том, что каждый раз, когда я добавляю или удаляю банку из моей папки lib
, мне нужно вручную добавить/удалить эту банку в настройках пути создания проекта (и, конечно, я часто забываю это сделать).
Есть ли способ просто сообщить Eclipse, что "Это папка, в которой я храню все мои банки. Пожалуйста, добавьте все банки из них автоматически в buildpath/classpath"? Я пытался рассматривать эту папку как папку класса (Add class folder...
), но она не работает так: (.
P.S. Я знаю о интеграции Maven и Eclipse-Maven, но я хочу, чтобы мой небольшой проект был простым (интеграция Maven иногда расстраивает, поэтому я предпочитаю избегать этого в этих проектах), поэтому, пожалуйста, не предлагайте это в ответ. Также, как я уже упоминал, это настольные проекты, поэтому в моем проекте нет папки WEB-INF/lib
, которая обычно автоматически обрабатывается плагинами Java EE.
Ответы
Ответ 1
вы можете попробовать с контейнером classpath, посмотрите здесь для примера.
Посмотрите также на контейнер Apache IvyDE classpath.
Однако добавление новой библиотеки в путь к классам прост и быстр:
Right click on it ---> Build Path ---> Add To Build Path
EDIT
Этот легкий плагин должен делать именно то, что вы хотите!
Ответ 2
Я не слишком уверен, но разве у вас нет подстановочных знаков в вашем классе? Таким образом, вы можете просто отредактировать свой файл .classpath для этого проекта Eclipse и использовать * в определенной папке... Я не пробовал, я в спешке, но что моя идея... не знаю, работает ли
EDIT вот что-то, что вы могли бы найти полезным:
Как использовать подстановочный шаблон в classpath для добавления нескольких банок?
В принципе, просто отредактируйте файл .classpath
, где Eclipse хранит параметры пути к классу для проекта
Ответ 3
Я думаю, что лучше всего использовать Gradle. У этого нет разочарования Maven с Eclipse. Если вы используете STS, он поставляется с Gradle предварительно упакованным.
См. ссылку
Ответ 4
Итак, я сделал это раньше:
Используйте 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>
И вот ссылка с кем-то с проблемой similair с помощью Ant для решения его проблем с классом.
Ant является переносимым, поэтому его можно фактически настроить в любом месте, и вы также можете использовать глобальные переменные, чтобы поддерживать целостность всех систем или просто использовать относительные пути. И есть плагин eclipse Ant
Ответ 5
просто попробуйте , включая
<classpathentry kind="lib" path="lib/spring/4.2.1" including="*.jar"/>