371 lines
No EOL
10 KiB
Text
371 lines
No EOL
10 KiB
Text
*vim-java-classpath.html*
|
|
|
|
Eclipse Classpath Editing
|
|
*************************
|
|
|
|
Source code completion, searching, auto imports, all rely on a
|
|
properly configured classpath. When you first create a project, a
|
|
.classpath file is created in the project's root directory. If you
|
|
created the project on an existing code-base, eclim will attempt to
|
|
setup the .classpath file with any source code directories or
|
|
libraries in the project.
|
|
|
|
Regardless of the state of your project you will at some point need to
|
|
update the classpath. The primary method of doing so, is to directly
|
|
edit the .classpath to add, update, or remove entries as needed. To
|
|
help you do this, eclim provides several commands to ease the creation
|
|
of new classpath entries and variables.
|
|
|
|
Note: All of the commands described below are only available while
|
|
editing the .classpath file in vim.When you write the .classpath
|
|
file, Vim will issue a command to the eclim server to update the
|
|
project's classpath, and will report any errors via vim's location
|
|
list (:help location-list).In addition to directly editing the
|
|
.classpath file, you may also use maven's support for maintaining
|
|
the eclipse classpath. For users who use ivy
|
|
(http://jayasoft.org/ivy), eclim also provides a means to auto
|
|
update the eclipse classpath when saving changes to your ivy.xml.
|
|
|
|
*:NewSrcEntry_java*
|
|
|
|
- :NewSrcEntry <dir> - Adds a new entry for a source code directory
|
|
relative to the project's root directory.
|
|
>
|
|
<classpathentry kind="src" path="src/java"/>
|
|
|
|
<
|
|
|
|
This command supports command completion of the directory relative
|
|
to the .classpath file.
|
|
|
|
*:NewProjectEntry_java*
|
|
|
|
- :NewProjectEntry <project> - Adds a new entry for a dependency on
|
|
another project.
|
|
>
|
|
<classpathentry exported="true" kind="src" path="/a_project"/>
|
|
|
|
<
|
|
|
|
This command supports command completion of the project name.
|
|
|
|
*:NewJarEntry_java*
|
|
|
|
- :NewJarEntry <file> [<src_path> <javadoc_path>] - Adds a new entry
|
|
for a jar file dependency. If the jar file is not in a folder under
|
|
the project root, you must use an absolute path (apparent limitation
|
|
with Eclipse).
|
|
>
|
|
<classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.8.3.jar"/>
|
|
|
|
<
|
|
|
|
You may optionally supply the path to the source for this jar and
|
|
the entry created will include the sourcepath attribute:
|
|
|
|
>
|
|
:NewJarEntry lib/commons-beanutils-1.8.3.jar lib/commons-beanutils-1.8.3-sources.jar
|
|
|
|
<
|
|
|
|
>
|
|
<classpathentry kind="lib" path="lib/commons-beanutils-1.8.3.jar"
|
|
sourcepath="lib/commons-beanutils-1.8.3-sources.jar"/>
|
|
|
|
<
|
|
|
|
In addition to the source path you can all supply the path to the
|
|
javadocs:
|
|
|
|
>
|
|
:NewJarEntry lib/commons-beanutils-1.8.3.jar lib/commons-beanutils-1.8.3-sources.jar lib/commons-beanutils-1.8.3-javadoc.jar
|
|
|
|
<
|
|
|
|
>
|
|
<classpathentry kind="lib" path="lib/commons-beanutils-1.8.3.jar"
|
|
sourcepath="lib/commons-beanutils-1.8.3-sources.jar">
|
|
<attributes>
|
|
<attribute name="javadoc_location" value="jar:platform:/resource/my_project/lib/commons-beanutils-1.8.3-javadoc.jar"/>
|
|
</attributes>
|
|
</classpathentry>
|
|
|
|
<
|
|
|
|
*:NewVarEntry_java*
|
|
|
|
- :NewVarEntry <VAR/file> [<src_path> <javadoc_path>] - Just like
|
|
NewJarEntry except an Eclipse "var" entry is created. When a jar
|
|
entry references an absolute path, you should instead use a var
|
|
entry. The var entry allows you to define a base dir as a variable
|
|
(ex. USER_HOME = /home/username), and then reference files relative
|
|
to that variable.
|
|
>
|
|
<classpathentry exported="true" kind="var" path="USER_HOME/lib/hibernate-4.0.jar"/>
|
|
|
|
<
|
|
|
|
This allows you to share .classpath files with other developers
|
|
without each having a local copy with environment specific paths.
|
|
|
|
To add new base classpath variables, you can edit
|
|
$ECLIPSE_HOME/plugins/org.eclim_version/classpath_variables.properties
|
|
|
|
By default, a USER_HOME variable is created that defaults to the
|
|
java System property "user.home" and you can add more as needed.
|
|
|
|
This command supports command completion of Eclipse variable names
|
|
as well as the files and directories beneath the path the variable
|
|
represents.
|
|
|
|
To manage the classpath variables, eclim also provides the following
|
|
commands.
|
|
|
|
*:VariableList*
|
|
- :VariableList - Lists all the currently available classpath
|
|
variables and their corresponding values.
|
|
*:VariableCreate*
|
|
- :VariableCreate <name> <path> - Creates or updates the variable
|
|
with the supplied name.
|
|
*:VariableDelete*
|
|
- :VariableDelete <name> - Deletes the variable with the supplied
|
|
name.
|
|
*classpath-src-javadocs*
|
|
|
|
|
|
Source and Javadoc location
|
|
===========================
|
|
|
|
For your var and lib classpath entries, if you didn't do so when you
|
|
created the entry, you can configure the location for that entry's
|
|
source code and javadocs, like the example below, allowing you to jump
|
|
to the source (|:JavaSearch|) or lookup the docs (|:JavaDocSearch|) of
|
|
classes, etc found in that library. Note that the javadoc location
|
|
must be a url, whether it be on the local file system (file:, jar:file
|
|
(jar:file):) or remote (http:).
|
|
|
|
>
|
|
|
|
<classpathentry exported="true" kind="lib" path="lib/hibernate-4.0.jar"
|
|
sourcepath="<path>">
|
|
<attributes>
|
|
<attribute name="javadoc_location" value="file:<javadoc_dir>"/>
|
|
</attributes>
|
|
</classpathentry>
|
|
|
|
<
|
|
|
|
|
|
Note: If your javadoc location is a jar in your workspace (in the
|
|
curent project or another project), then the url must be in the form
|
|
(where <project_name> is replaced with your project's name):>
|
|
|
|
jar:platform:/resource/<project_name>/path/to/javadoc.jar!/
|
|
|
|
<
|
|
|
|
|
|
If the jar file is outside of your workspace, then it would be in
|
|
the form:>
|
|
|
|
jar:file:/your/absolute/path/to/javadoc.jar!/
|
|
|
|
<
|
|
|
|
|
|
*classpath-maven*
|
|
|
|
|
|
Maven
|
|
=====
|
|
|
|
Maven (http://maven.apache.org) comes bundled with an Eclipse plugin
|
|
that allows you to easily maintain your .classpath file based on your
|
|
pom.xml (or project.xml for maven 1.x users).
|
|
|
|
Note: For additional information on the Eclipse plugin from maven,
|
|
you may visit their online documentation for maven 1.x
|
|
(http://maven.apache.org/maven-1.x/plugins/eclipse/) or maven 2.x
|
|
(http://maven.apache.org/guides/mini/guide-ide-eclipse.html).
|
|
|
|
*:MvnRepo* *:MavenRepo*
|
|
|
|
- Initial Setup
|
|
To initialize maven's support for updating the eclipse classpath you
|
|
first need to set the M2_REPO (or MAVEN_REPO for 1.x) classpath
|
|
variable in the Eclipse workspace by executing the following command
|
|
in vim:
|
|
|
|
maven 2.x:
|
|
|
|
>
|
|
:MvnRepo
|
|
|
|
<
|
|
|
|
maven 1.x:
|
|
|
|
>
|
|
:MavenRepo
|
|
|
|
<
|
|
|
|
- Updating your .classpath
|
|
Once you have performed the initial setup, updating the Eclipse
|
|
.classpath file is as easy as executing the following at a command
|
|
line:
|
|
|
|
maven 2.x:
|
|
|
|
>
|
|
mvn eclipse:eclipse
|
|
|
|
<
|
|
|
|
maven 1.x:
|
|
|
|
>
|
|
maven eclipse
|
|
|
|
<
|
|
|
|
or in Vim:
|
|
|
|
maven 2.x:
|
|
|
|
>
|
|
:Mvn eclipse:eclipse
|
|
|
|
<
|
|
|
|
maven 1.x:
|
|
|
|
>
|
|
:Maven eclipse
|
|
|
|
<
|
|
|
|
*classpath-maven-pom*
|
|
For maven 2.x users, eclim also provides support for auto updating
|
|
the .classpath for your project every time you save your pom.xml
|
|
file. Any entries found in the pom.xml that are not in the
|
|
.classpath will be added, any entries that differ in version will be
|
|
updated, and any stale entries deleted.
|
|
|
|
Note: This behavior can be disabled by adding the following
|
|
setting to your vimrc:>
|
|
|
|
let g:EclimMavenPomClasspathUpdate = 0
|
|
|
|
<
|
|
|
|
|
|
Note: This feature simply updates the entries in your project's
|
|
.classpath file, it does not download any newly added jars. When
|
|
you'd like maven to download those new jars, you can run the
|
|
following from the command line:>
|
|
|
|
mvn dependency:resolve
|
|
|
|
<
|
|
|
|
|
|
or from within Vim:>
|
|
|
|
:Mvn dependency:resolve
|
|
|
|
<
|
|
|
|
|
|
*classpath-ivy*
|
|
|
|
|
|
Ivy
|
|
===
|
|
|
|
For users of ivy (http://jayasoft.org/ivy), eclim provides support for
|
|
auto updating the .classpath for your project every time you save your
|
|
ivy.xml file. Any entries found in the ivy.xml that are not in the
|
|
.classpath will be added, any entries that differ in version will be
|
|
updated, and any stale entries deleted.
|
|
|
|
*:IvyRepo*
|
|
|
|
- Initial Setup
|
|
Before you can start utilizing the auto updating support, you must
|
|
first set the location of your ivy repository (ivy cache). This is
|
|
the directory where ivy will download the dependencies to and where
|
|
eclipse will then pick them up to be added to your project's
|
|
classpath.
|
|
|
|
To set the repository location you can use the :IvyRepo command
|
|
which is made available when editing an ivy.xml file.
|
|
|
|
>
|
|
:IvyRepo ~/.ivy2/cache/
|
|
|
|
<
|
|
|
|
If you fail to set this prior to writing the ivy.xml file, eclim
|
|
will emit an error notifying you that you first need to set the
|
|
IVY_REPO variable via this command.
|
|
|
|
- Updating your .classpath
|
|
Once you have performed the initial setup, updating the Eclipse
|
|
.classpath file is as easy as saving your ivy.xml file (:w) and
|
|
letting eclim do the rest.
|
|
|
|
Note: This behavior can be disabled by adding the following
|
|
setting to your vimrc:>
|
|
|
|
let g:EclimIvyClasspathUpdate = 0
|
|
|
|
<
|
|
|
|
|
|
Note: This feature will update your project's .classpath file
|
|
accordingly, but it will not download any newly added jars. For
|
|
that you'll need to have a target in your ant build file that will
|
|
force ivy to download dependencies. Something like the example
|
|
from the ivy docs:>
|
|
|
|
<target name="resolve" description="--> retrieve dependencies with ivy">
|
|
<ivy:retrieve/>
|
|
</target>
|
|
|
|
<
|
|
|
|
|
|
You can then run this target from the command line:>
|
|
|
|
ant resolve
|
|
|
|
<
|
|
|
|
|
|
or from within Vim>
|
|
|
|
:Ant resolve
|
|
|
|
<
|
|
|
|
|
|
- Preserving manually added entries
|
|
When utilizing the ivy support, eclim will attempt to remove any
|
|
stale entries from your .classpath file. If you have some manually
|
|
added entries, these may be removed as well. To prevent this you
|
|
can add a classpath entry attribute notifying eclim that the entry
|
|
should be preserved.
|
|
|
|
Ex.
|
|
|
|
>
|
|
<classpathentry kind="lib" path="lib/j2ee-1.4.jar">
|
|
<attributes>
|
|
<attribute name="eclim.preserve" value="true"/>
|
|
</attributes>
|
|
</classpathentry>
|
|
|
|
<
|
|
|
|
vim:ft=eclimhelp |