WinZip 9.0 ACTUAL qnt serial key or number

WinZip 9.0 ACTUAL qnt serial key or number

WinZip 9.0 ACTUAL qnt serial key or number

WinZip 9.0 ACTUAL qnt serial key or number

VFSLib Amazon S3 Example

Please read the following steps to use the VFSLib Java library. This example demonstrates the usage of the Amazon S3 © provider included in the VFSLib ZIP/TGZ archives.

The Java example code is based on the original Apache Commons VFS classes like DefaultFileSystemManager and thus should integrate seamlessly into existing implementations.

Step 1: Download VFSLib ZIP/TGZ

First of all please download the current VFSLib ZIP/TGZ archive on your computer. Choose the archive which can be best extracted from your computer (e.g. ZIP for Windows, TGZ for UNIX, ). The ZIP archive may be unzipped directly from Ant build scripts using the unzip task into a local directory of your choice. Of course you can extract the VFSLib ZIP archive manually with WinZIP or other ZIP extraction tools.

The listing below shows the contents of the current VFSLib archives (list shows relevant files/folders only, library versions may change for newer VFSLib versions):


The ZIP archive contains various files and resources for VFSLib. The API (Javadoc) can be displayed by opening the file with your favorite Internet browser. In the examplefolder you can find the precompiled Amazon S3 example code to be executed directly or using Apache Ant.

The extlibfolder contains the additional libraries needed to run the VFSLib properly. If you plan to use the Amazon S3 provider you will have to add the Commons libraries, AWS/Http, and Jaxen/JDOM to the classpath. The libfolder contains the VFSLib libraries including some language packs (English and German at the moment). The English language pack is mandatory and must be included always along with the main VFSLib JAR file. The other language packs are only needed if your application supports these languages.

In the licensefolder you can find the VFSLib license as well as the licenses for the 3rd party JAR files residing in extlib. Please take a look at the as a condensed overview of the package. The current release notes for the package can be found in the file.

A compatible Java Runtime Environment (JRE) must be installed prior to the installation of Apache Ant. Most developers can use their normal development environment here. Some IDEs like Netbeans which include a compatible JRE and Ant installation may support the direct execution of Ant build scripts.

Step 2: Running The S3 Example

The VFSLib provider for Amazon S3 example can be easily executed using Apache Ant. If not already installed please download and install a recent Ant for your operating system. Then you should add the Ant installation folder with the Ant executables to your local classpath so that the ant command may be executed directly from the extracted ZIP/TGZ archive folder (see secion Download VFSLib ZIP/TGZ).

Please open a command line (e.g. MS-DOS under Windows) and type the following commands:

   cd [VFSLib installation folder]\example

   ant -file run-amazon-s3

Anyway you will need to run the example in a graphical environment since the classes display dialogs to prompt the user for the parameters necessary for Amazon S3.

As figure 1 shows a dialog is being displayed then where you can specify the (evaluation) license for VFSLib. If the license is not valid the example class exits with a message. If you specified a valid license the example proceeds with showing the next dialogs.

Figure 1: Amazon S3 example license chooser dialog

Figure 2: Amazon S3 example access key dialog

Figure 3: Amazon S3 example secret key dialog

Figure 4: Amazon S3 example bucket name dialog

You are next asked to specify access key and secret key for your AWS account. Please go create a Amazon Web Services (AWS) account on the Amazon website. The access key and secret key generated by Amazon can be used to fill in the dialog input fields (see figures 2 and 3). The bucket name is the globally unique identifier for the bucket (drive) you're gonna access (see figure 4).

If you specified an evaluation license for VFSLib now an additional dialog will show up where you have to press the "Continue" button to move on. If you have obtained a commercial license already this dialog does not appear.

If all input has been done the example will continue in the background by performing some simple file operations using the specified Amazon S3 account. Please check out the output of the example script.

If you already have the keys and bucket name feel free to edit the file and insert your values. You will have to uncomment the arg

Step 3: The S3 Example Step By Step

Let's take a closer look at the Amazon S3 example implementation. The first thing to do is to configure the VFSLib class which is the central class of the VFSLib library:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // Setup the main VFSLib instance, get evaluation license key from Leisenfels websiteVFSLib vfslib = new VFSLib();cipsas.comenseFile(licensefile);// Import from file// We use the default file system manager hereDefaultFileSystemManager fsmanager = (DefaultFileSystemManager) cipsas.comager();// Add Amazon S3 provider to VFSS3FileProvider provider = cipsas.comviderAmazonS3(fsmanager);String scheme = cipsas.comemeAmazonS3();// Pass bucket name over to VFSLib to access the Amazon S3 accountFileSystemOptions options = new FileSystemOptions();S3FileSystemConfigBuilder builder = new S3FileSystemConfigBuilder();cipsas.comketName(options, bucket);// Setup proper account name, used as user name for Amazon S3 URLs (failsafe is "anonymous"):// s3://[displayname]@cipsas.coming username = "johndoe";cipsas.comountDisplayName(options, username);cipsas.comessKeyID(options, accesskeyid);cipsas.comretKey(options, secretkey);

Configuration of the VFSLib (see

List a S3 Folder

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 String uri = scheme + "://" + username + "";try{ FileObject fileobj = cipsas.comeFile(uri, options);if(cipsas.come().equals({ FileObject[] childs = cipsas.comldren();for(FileObject next : childs){if(cipsas.come().equals({cipsas.comn(" DIR: " + cipsas.comf(next));}cipsas.comn(" FILE: " + cipsas.comf(next));}}cipsas.comn(" Entry " + uri + " is not a folder");}catch(Exception e){ cipsas.comtackTrace();}

List a S3 folder (see

Create a S3 Folder

1 2 3 4 5 6 7 8 9 10 11 12 String tempfolder = scheme + "://" + username + "";boolean success = false;try{ FileObject fileobj = cipsas.comeFile(tempfolder, options);if(!{ cipsas.comFolder(); success =;}}catch(Exception e){ cipsas.comtackTrace();}

Create a S3 folder (see

Upload a File To S3, Get File Type, Last Modified, And Size

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 String content = "Hello world!";String encoding = "ISO";// Upload a file to Amazon S3. Get file type, last modified, and tempfile = tempfolder + "/";try{ FileObject fileobj = cipsas.comeFile(tempfile, options); cipsas.comtent().setAttribute(cipsas.com_CONTENT_LENGTH, cipsas.comes(encoding).length);OutputStream ostream = cipsas.comtent().getOutputStream();;;; success =;cipsas.comn(" TYPE: " + cipsas.come().getName());cipsas.comn(" MOD: " + newDate(cipsas.comtent().getLastModifiedTime()));cipsas.comn(" SIZE: " + cipsas.comtent().getSize());}catch(Exception e){ cipsas.comtackTrace();}

Upload a file to S3, get file type, last modified, and size (see

Rename a S3 File

1 2 3 4 5 6 7 8 9 10 11 String tempfilerenamed = tempfolder + "/README";try{ FileObject fileobj = cipsas.comeFile(tempfile, options); FileObject fileobjrenamed = cipsas.comeFile(tempfilerenamed, options);; success =;if(success) tempfile = tempfilerenamed;}catch(Exception e){ cipsas.comtackTrace();}

Rename a S3 file (see

Download a File From S3

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 try{ FileObject fileobj = cipsas.comeFile(tempfile, options);ByteArrayOutputStream bostream = newByteArrayOutputStream();InputStream istream = cipsas.comtent().getInputStream();int len;byte[] buffer = newbyte[];while((len =!= -1){, 0, len);};;;String loaded = newString(cipsas.comArray(), encoding); success =;}catch(Exception e){ cipsas.comtackTrace();}

Download a file from S3 (see

Remove a S3 File And Folder

1 2 3 4 5 6 7 8 9 10 11 12 try{// Remove file FileObject fileobj = cipsas.comeFile(tempfile, options); success =;// Remove folder fileobj = cipsas.comeFile(tempfolder, options); success =;}catch(Exception e){ cipsas.comtackTrace();}

Remove a S3 file and folder (see

How to continue

Print Email

Источник: []
, WinZip 9.0 ACTUAL qnt serial key or number

Frequently Asked Questions


About this FAQ



How do I

It doesn't work (as expected)

Apache Ant and IDEs/Editors

Advanced Issues

Known Problems


Where do I find the latest version of this document?

The latest version can always be found at Apache Ant's homepage

How can I contribute to this FAQ?

The page you are looking it is generated from this document. If you want to add a new question, please submit a patch against this document to one of Ant's mailing lists; hopefully, the structure is self-explanatory.

Patches can be created by the svn diff command. See also the Fixing the Bug paragraph in this page.

How do you create the HTML version of this FAQ?

We use Anakia to render the HTML version from the original XML file.

The Velocity stylesheets used to process the XML files can be found in the subdirectory of Ant's site SVN repository - the build file at the top level of the ant site SVN module is used to drive Anakia.

What is Apache Ant?

Ant is a Java-based build tool. In theory, it is kind of like Make, without Make's wrinkles and with the full portability of pure Java code.

Why do you call it Ant?

According to Ant's original author, James Duncan Davidson, the name is an acronym for "Another Neat Tool".

Later explanations go along the lines of "ants do an extremely good job at building things", or "ants are very small and can carry a weight dozens of times their own" - describing what Ant is intended to be.

Tell us a little bit about Ant's history.

Initially, Ant was part of the Tomcat code base, when it was donated to the Apache Software Foundation. It was created by James Duncan Davidson, who is also the original author of Tomcat. Ant was there to build Tomcat, nothing else.

Soon thereafter, several open source Java projects realized that Ant could solve the problems they had with Makefiles. Starting with the projects hosted at Jakarta and the old Java Apache project, Ant spread like a virus and is now the build tool of choice for a lot of projects.

In January , Ant was moved to a separate CVS module and was promoted to a project of its own, independent of Tomcat, and became Apache Ant.

The first version of Ant that was exposed to a larger audience was the one that shipped with Tomcat's release on 19 April This version has later been referred to as Ant

The first official release of Ant as a stand-alone product was Ant , released on 19 July The complete release history:

Ant Version Release Date
19 July
24 October
3 March
3 September
11 October
10 July
3 October
3 March
9 April
12 August
18 December
12 February
16 July
28 April
19 May
2 June
19 December
27 June
8 February
7 May
27 December
29 February
23 May
07 March
21 May
12 July
29 December
05 May
03 Jun
02 Jul
12 Apr
31 Dec
06 Feb
06 Feb
27 Mar
22 Jun
13 Jul
17 Mar
13 May
31 Dec
06 Feb
06 Feb
27 Mar
22 Jun
8 May
5 Sep
13 May

Which version of Java is required to run Apache Ant?

You will need Java installed on your system, version or later required. The later the version of Java, the more Ant tasks you get.

The git branch x is used for long term support of Ant x versions that can be built and run with Java

If only the JRE is present but not a full JDK then many tasks will not work.

The following table lists the minimum Java versions required to compile and run Ant. Note that most committers work with more recent versions of the JDK and that Ant doesn't get tested much for older versions.

Ant Version Minimum Java Version
up to
up to
up to
up to
Any x release and the git branch x
Any x release and the current git master branch

I get checksum errors when I try to extract the distribution file. Why?

Ant's distribution contains file names that are longer than characters, which is not supported by the standard tar file format. Several different implementations of tar use different and incompatible ways to work around this restriction.

Ant's <tar> task can create tar archives that use the GNU tar extension, and this has been used when putting together the distribution. If you are using a different version of tar (for example, the one shipping with Solaris), you cannot use it to extract the archive.

The solution is to either install GNU tar, which can be found here, or use the zip archive instead (you can extract it using ).

How do you get antx (or any version later than ) to work on on RedHat ES 3?

Redhat ES comes installed with ant Even if you have your PATH and ANT_HOME variables set correctly to a later version of ant, you will always be forced to use the preinstalled version.

To use a later version of ant on this OS you could do the following:

$ ant -version Apache Ant version compiled on November 12 $ su - # rpm -e ant ant-libs # exit $ hash -r $ ant -version Apache Ant version compiled on July 16

How to I precompile Java Server Pages (JSPs)?

Apache Ant has a built in optional task <jspc> which was intended for that. But this task is deprecated. Here the alternative suggested by the manual:

Instead of relying on container specific JSP-compilers we suggest deploying the raw files (*.jsp) and use the container build-in functions: after deploying run a test suite (e.g. with Cactus or HttpUnit) against the deployed web application. So you'll get then test result and the compiled JSPs.

How do I realize os--specific configurations?

The core idea is using property files which name accords to the os-name. Then simply use the build-in property .

For better use you should also provide a file with default values. But be careful with the correct os-names. For test simply <echo> the ${} on all machines and you can be sure to use the right file names.

<property file="${}.properties"/> <property file="cipsas.comties"/>

How do I add an external task that I've written to the page "External Tools and Tasks"?

Join and post a message to the dev or user mailing list (one list is enough), including the following information:

  • the name of the task/tool
  • a short description of the task/tool
  • a Compatibility: entry stating with which version(s) of Ant the tool/task is compatible to
  • a URL: entry linking to the main page of the tool/task
  • a Contact: entry containing the email address or the URL of a webpage for the person or list to contact for issues related to the tool/task. Note that we'll add a link on the page, so any email address added there is not obfuscated and can (and probably will) be abused by robots harvesting websites for addresses to spam.
  • a License: entry containing the type of license for the tool/task

The preferred format for this information is a patch to this document.

If you have written something bigger than a 'simple plugin' to Ant it may be better to add the link to The procedure to add it is the same. The file to patch is this document. The syntax of that file is the same.

How do I create new tasks?

Apart from a lot of information on using Ant, the Manual also contains information on how to extend Ant with new tasks. This information can be found under "Developing with Ant".

Chances are that someone else already created the task you want to create, it may be wise to see External Tools and Tasks and Related Projects first.

How do I pass parameters from the command line to my build file?

Use properties. Using lets you define values for properties on the Ant command line. These properties can then be used within your build file as any normal property: will put in .

How can I use Jikes-specific command-line switches?

A couple of switches are supported via "magic" properties:

switch property default
+E false == not set
+P cipsas.comic false == not set
+F cipsas.compend false == not set
(Only for Ant < ; replaced by the attribute of the task after that.)
cipsas.comgs true == not set

With Ant >= , you can also use nested elements with the task.

How do I include a < character in my command-line arguments?

The short answer is "Use: ".

The long answer is that this probably won't do what you want anyway (see the next section).

How do I redirect standard input or standard output in the task?

Say you want to redirect the standard output stream of the command to write to a file, something like:

shell-prompt> m4 foo.m4 > foo

and try to translate it into

<exec executable="m4"> <arg value="foo.m4"/> <arg value="&gt;"/> <arg value="foo"/> </exec>

This will not do what you expect. The output redirection is performed by your shell, not the command itself, so this should read:

<exec executable="/bin/sh"> <arg value="-c" /> <arg value="m4 foo.m4 &gt; foo" /> </exec>

Note that you must use the attribute of in the last element, in order to have the command passed as a single, quoted argument. Alternatively, you can use:

<exec executable="/bin/sh"> <arg line='-c "m4 foo.m4 &gt; foo"'/> </exec>

Note the double-quotes nested inside the single-quotes.

How do I execute a batch file or shell script from Ant?

On native Unix systems, you should be able to run shell scripts directly. On systems running a Unix-type shell (for example, Cygwin on Windows) execute the (command) shell instead - for batch files, for shell scripts - then pass the batch file or shell script (plus any arguments to the script) as a single command, using the or switch, respectively. See the above section for example tasks executing . For batch files, use something like:

<exec dir="." executable="cmd" os="Windows NT"> <arg line="/c"/> </exec>

I want to execute a particular target only if multiple conditions are true.

There are actually several answers to this question.

If you have only one set and one unset property to test, you can specify both an and an attribute for the target, and they will act as if they are "anded" together.

If you are using a version of Ant or earlier, the way to work with all other cases is to chain targets together to determine the specific state you want to test for.

To see how this works, assume you have three properties: , , and . You want to test that and are set, and that is not. If the condition holds true you want to echo "yes".

Here is the implementation in Ant and earlier:

<target name="cond" depends="cond-if"/> <target name="cond-if" if="prop1"> <antcall target="cond-if-2"/> </target> <target name="cond-if-2" if="prop2"> <antcall target="cond-if-3"/> </target> <target name="cond-if-3" unless="prop3"> <echo message="yes"/> </target>

Note: tasks do not pass property changes back up to the environment they were called from, so you wouldn't be able to, for example, set a property in the target, then do in the target.

Starting with Ant , you can use the task.

<target name="cond" depends="cond-if,cond-else"/> <target name="check-cond"> <condition property="cond-is-true"> <and> <not> <equals arg1="${prop1}" arg2="$${prop1}" /> </not> <not> <equals arg1="${prop2}" arg2="$${prop2}" /> </not> <equals arg1="${prop3}" arg2="$${prop3}" /> </and> </condition> </target> <target name="cond-if" depends="check-cond" if="cond-is-true"> <echo message="yes"/> </target> <target name="cond-else" depends="check-cond" unless="cond-is-true"> <echo message="no"/> </target>

This version takes advantage of two things:

  • If a property has not been set, will evaluate to .
  • To get a literal in Ant, you have to escape it with another - this will also break the special treatment of the sequence.

Because testing for a literal string isn't all that readable or easy to understand, post Ant introduces the element to the task.

Here is the previous example done using :

<target name="check-cond"> <condition property="cond-is-true"> <and> <isset property="prop1"/> <isset property="prop2"/> <not> <isset property="prop3"/> </not> </and> </condition> </target>

The last option is to use a scripting language to set the properties. This can be particularly handy when you need much finer control than the simple conditions shown here but, of course, comes with the overhead of adding JAR files to support the language, to say nothing of the added maintenance in requiring two languages to implement a single system. See the task documentation for more details.

How can I include national characters like German umlauts in my build file?

You need to tell the XML parser which character encoding your build file uses, this is done inside the XML declaration.

By default the parser assumes you are using the UTF-8 encoding instead of your platform's default. For most Western European countries you should set the encoding to . To do so, make the very first line of you build file read like

<?xml version="" encoding="ISO" ?>

How do I use 's switch? I don't want a MANIFEST.

A JAR archive is a ZIP file, so if you don't want a MANIFEST you can simply use .

If your file names contain national characters you should know that Sun's utility like Ant's uses UTF-8 to encode their names while uses your platforms default encoding. Use the encoding attribute of if necessary.

How can I do something like (double expanding the property)?

Without any external help it is tricky.

With <script/>, which needs external libraries, you can do

<script language="javascript"> propname = cipsas.comperty("anotherprop"); cipsas.comProperty("prop", propname); </script>

With AntContrib (external task library) you can do .

With Ant you can simulate the AntContribs <propertycopy> and avoid the need of an external library:

<macrodef name="propertycopy"> <attribute name="name"/> <attribute name="from"/> <sequential> <property name="@{name}" value="${@{from}}"/> </sequential> </macrodef>

With the 'props' antlib (external, but also from Ant) you could do the dereferencing with - not just in the property task - instead everywhere in your buildfile (after registering the required property helper).

<propertyhelper> <props:nested /> </propertyhelper> <property name="foo" value="" /> <property name="var" value="foo" /> <echo> ${${var}} = </echo>

With Flaka (external Ant Plugin) you could do the dereferencing with - not just in flaka tasks, but all tasks after installing flaka's property handler.

<project xmlns:fl=""> <fl:install-property-handler/> <property name="foo" value=""/> <property name="var" value="foo" /> <property name="buildtype" value="test"/> <property name="appserv_test" value="//testserver"/> <echo> #{${var}} = <!-- nested property --> #{appserv_${buildtype}} </echo> </project>

How can I delete everything beneath a particular directory, preserving the directory itself?

Most users who go down this path have no problem figuring out that will help them. The seemingly tricky part is preserving the base directory itself, which Ant includes in the directory scan. Fortunately the answer is simple:

<delete includeemptydirs="true"> <fileset dir="dirtokeep" includes="**/*" /> </delete>

How can I delete a particular directory, if and only if it is empty?

Most users who go down this path have no problem figuring out that will help them. The seemingly tricky part is preserving the non-empty directories, which Ant includes in the directory scan. Fortunately the answer is simple:

<delete includeemptydirs="true"> <fileset dir="dirtokeepifnotempty" excludes="**/*" /> </delete>

General Advice

There are many reasons why Apache Ant doesn't behave as expected, not all of them are due to Ant bugs. See our Having Problems? page for hints that may help pinning down the reasons for your problem.

Why does Ant always recompile all my Java files?

In order to find out which files should be compiled, Ant compares the timestamps of the source files to those of the resulting files. Opening all source files to find out which package they belong to would be very inefficient. Instead, Ant expects you to place your source files in a directory hierarchy that mirrors your package hierarchy and to point Ant to the root of this directory tree with the attribute.

Say you have . If Ant finds a file , it expects it to be in package so that the resulting file is going to be .

If your source-tree directory structure does not match your package structure, Ant's heuristic won't work, and it will recompile classes that are up-to-date. Ant is not the only tool that expects a source-tree layout like this.

If you have Java source files that aren't declared to be part of any package, you can still use the task to compile these files correctly - just set the and attributes to the actual directory the source files live in and the directory the class files should go into, respectively.

I've used a task to delete unwanted SourceSafe control files (CVS files, editor backup files, etc.), but it doesn't seem to work; the files never get deleted. What's wrong?

This is probably happening because, by default, Ant excludes SourceSafe control files () and certain other files from FileSets.

Here's what you probably did:

<delete> <fileset dir="${}" includes="**/"/> </delete>

You need to switch off the default exclusions, and it will work:

<delete> <fileset dir="${}" includes="**/" defaultexcludes="no"/> </delete>

For a complete listing of the patterns that are excluded by default, see the user manual.

I have a target I want to skip if a property is set, so I have as an attribute of the target, but all the targets this target depends on are still executed. Why?

The list of dependencies is generated by Ant before any of the targets are run. This allows dependent targets, such as an target, to set properties that can control the execution of the targets higher in the dependency graph. This is a good thing.

However, when your dependencies break down the higher-level task into several smaller steps, this behaviour becomes counter-intuitive. There are a couple of solutions available:

  1. Put the same condition on each of the dependent targets.
  2. Execute the steps using , instead of specifying them inside the attribute.

In my , I've put in an of all files followed by an of just the files I want, but it isn't giving me any files at all. What's wrong?

The order of the and tags within a is ignored when the FileSet is created. Instead, all of the elements are processed together, followed by all of the elements. This means that the elements only apply to the file list produced by the elements.

To get the files you want, focus on just the patterns that would be necessary to get them. If you find you need to trim the list that the elements produce, then use elements.

failed to build my program via javac even when I put the needed jars in an external file and reference them by or .

When loads properties from an external file it doesn't touch the value of properties, trailing blanks will not be trimmed for example.

If the value represents a file path, like a jar needed to compile, the task which requires the value, javac for example would fail to compile since it can't find the file due to trailing spaces.

Ant creates WAR files with a lower-case or JAR files with a lower-case directory.

No it doesn't.

You may have seen these lower-case directory names in WinZIP, but WinZIP is trying to be helpful (and fails). If WinZIP encounters a filename that is all upper-case, it assumes it has come from an old DOS box and changes the case to all lower-case for you.

If you extract (or just check) the archive with jar, you will see that the names have the correct case.

With WinZIP (version at least), this can be corrected in the configuration. In the Options/Configuration menu, in the View tab, General section, check the "Allow all upper case files names" box. The META-INF and WEB-INF will look correct.

I installed Ant x and now get

The cause of this is that there is an old version of ant somewhere in the class path or configuration.

A version of this problem happens with jars that are in the classpath that include an embedded copy of ant classes. An example of this is some copies of

One can check if this is the case by doing (on unix/sh):

I installed Ant x and now get

The cause of this is that there is an old version of ant somewhere in the class path or configuration.

A version of this problem may be seen on some linux systems. Some linux systems (Fedora Core 2 for example), comes with a version of ant pre-installed. There is a configuration file called which if present, the ant shell script will 'dot' include. On Fedora Core 2, the /etc/ file resets the environment variable to . This causes the problem that an old version of ant (x in this cause) will be used with a new version of the ant script file.

One can check if this is the case by doing .

Whenever I use the Ant jar or manifest related tasks, long lines in my manifest are wrapped at 70 characters and the resulting jar does not work in my application server. Why does Ant do this?

Ant implements the Java Jar file specification. Please refer to the notes section where it discusses the maximum allowable length of a line and the concept of continuation characters.

If a jar file produced by Ant does not work in your appserver, and that failure is due to the wrapped manifest, then you need to consult your appserver provider, as it is a bug in their appserver. Far more likely, however, is a problem in your specification of your classpath. It is not Ant's wrapping of your classpath that is the problem.

Do not raise a bug about this issue until you have checked to ensure that the problem is not due to your classpath specification.

fails with on Windows.

A common problem is not having the executable on the PATH. In case you get an error message have a look at your PATH variable.

Just type the command directly on the command line and if Windows finds it, Ant should do it too. (Otherwise ask on the user mailinglist for help.) If Windows can not execute the program add the directory of the programm to the PATH () or specify the absolute path in the attribute in your buildfile.

My reports are missing the first line containing the failure message.

Starting with Ant the text " more" has been added to the set of lines that will be filtered out from stacktraces if the attribute has been set. The intention is to suppress the "24 more " line at the bottom of the trace.

If the failure message contains the word "more" the line containing the message will be removed as well. This is supposed to be fixed in Ant once it is released.

The only existing work-arounds are to disable or change the failure message to not contain the word "more".

Properties are expanded twice in my ed tasks.

If your ed tasks contains attributes, property references are expanded twice, for example

<macrodef name="echotest"> <attribute name="message" /> <sequential> <echo message="@{message}" /> </sequential> </macrodef> <echotest message="$${basedir}" />

echos the value of the basedir property rather than the text ${basedir} one would expect.

It happens because sequences are expanded once before expanding sequences and once afterwards. This is required to make things like the macrodef in this FAQ work. It enables

<property name="choice" value="2"/> <property name="thing.1" value="one"/> <property name="thing.2" value="two"/> <property name="thing.3" value="three"/> <propertycopy to="thing" from="thing.${choice}"/>

which wouldn't be possible if properties weren't expanded twice.

If you want to avoid the double expansion, since Ant you can turn it off explicitly:

<macrodef name="echotest"> <attribute name="message" doubleexpanding="false" /> <sequential> <echo message="@{message}" /> </sequential> </macrodef> <echotest message="$${basedir}" />

Is Apache Ant supported by my IDE/Editor?

See the section on IDE integration on our External Tools and Tasks page.

Why doesn't (X)Emacs/vi/MacOS X's project builder correctly parse the error messages generated by Ant?

Ant adds a "banner" with the name of the current task in front of all logging messages - and there are no built-in regular expressions in your editor that would account for this.

You can disable this banner by invoking Ant with the switch. To make Ant autodetect Emacs' compile mode, put this into your (contributed by Ville Skyttä).

# Detect (X)Emacs compile mode if [ "$EMACS" = "t" ] ; then ANT_ARGS="$ANT_ARGS -emacs" ANT_OPTS="$ANT_OPTS" fi

Alternatively, you can add the following snippet to your to make Emacs understand Ant's output.

(require 'compile) (setq compilation-error-regexp-alist (append (list ;; works for jikes '("^\\s-*\\[[^]]*\\]\\s-*\\(.+\\):\\([]+\\):\\([]+\\):[]+:[]+:" 1 2 3) ;; works for javac '("^\\s-*\\[[^]]*\\]\\s-*\\(.+\\):\\([]+\\):" 1 2)) compilation-error-regexp-alist))

Yet another alternative that preserves most of Ant's formatting is to pipe Ant's output through the following Perl script by Dirk-Willem van Gulik:

#!/usr/bin/perl # # May - remove any # [foo] lines from the output; keeping # spacing more or less there. # $|=1; while(<STDIN>) { if (s/^(\s+)\[(\w+)\]//) { if ($2 ne $last) { print "$1\[$2\]"; $s = ' ' x length($2); } else { print "$1 $s "; }; $last = $2; }; print; };

Is there a DTD that I can use to validate my build files?

An incomplete DTD can be created by the task - but this one has a few problems:

  • It doesn't know about required attributes. Only manual tweaking of this file can help here.
  • It is not complete - if you add new tasks via it won't know about it. See this page by Michel Casabianca for a solution to this problem. Note that the DTD you can download at this page is based on Apache Ant
  • It may even be an invalid DTD. As Ant allows tasks writers to define arbitrary elements, name collisions will happen quite frequently - if your version of Ant contains the optional and tasks, there are two XML elements named (the task and the nested child element of ) with different attribute lists. This problem cannot be solved; DTDs don't give a syntax rich enough to support this.

How do I include an XML snippet in my build file?

You can use XML's way of including external files and let the parser do the job for Ant:

<?xml version=""?> <!DOCTYPE project [ <!ENTITY common SYSTEM ""> ]> <project name="test" default="test" basedir="."> <target name="setup"> </target> &common; </project>

will literally include the contents of where you've placed the entity.

(The filename in this example is resolved relative to the containing XML file by the XML parser. You may also use an absolute protocol URI.)

In combination with a DTD, this would look like this:

<!DOCTYPE project PUBLIC "-//ANT//DTD project//EN" "" [ <!ENTITY include SYSTEM ""> ]>

Starting with Ant , there is a new task that can (also) be used to include build file fragments. Unlike the snippets used with entity includes, the referenced files have to be complete Ant build files, though.

The example above would become:

<?xml version=""?> <project name="test" default="test" basedir="."> <target name="setup"> </target> <import file="./"/> </project>

Unlike entity includes, will let you use Ant properties in the file name.

How do I send an email with the result of my build process?

If you are using a nightly build of Ant after , you can use the built-in MailLogger:

ant -logger cipsas.comgger

See the Listeners & Loggers documentation for details on the properties required.

For older versions of Ant, you can use a custom BuildListener that sends out an email in the buildFinished() method. Will Glozer <> has written such a listener based on JavaMail. The source is:

import*; import*; import*; import cipsas.comet.*; import*; /** * A simple listener that waits for a build to finish and sends an email * of the results. The settings are stored in "cipsas.comties" and * are fairly self explanatory. * * @author Will Glozer * @version a 09/06/ */ public class BuildMonitor implements BuildListener { protected Properties props; /** * Create a new BuildMonitor. */ public BuildMonitor() throws Exception { props = new Properties(); InputStream is = getClass().getResourceAsStream("cipsas.comties");;; } public void buildStarted(BuildEvent e) { } /** * Determine the status of the build and the actions to follow, now that * the build has completed. * * @param e Event describing the build status. */ public void buildFinished(BuildEvent e) { Throwable th = cipsas.comeption(); String status = (th != null) ? "failed" : "succeeded"; try { String key = "build." + status; if (cipsas.comperty(key + ".notify").equalsIgnoreCase("false")) { return; } Session session = cipsas.comaultInstance(props, null); MimeMessage message = new MimeMessage(session); cipsas.comipients(, parseAddresses( cipsas.comperty(key + ""))); cipsas.comject(cipsas.comperty(key + "cipsas.comt")); BufferedReader br = new BufferedReader(new FileReader( cipsas.comperty(""))); StringWriter sw = new StringWriter(); String line = cipsas.comne(); while (line != null) {;"\n"); line = cipsas.comne(); }; cipsas.comt(cipsas.comng(), "UTF-8");; Transport transport = cipsas.comnsport(); cipsas.comt();;; } catch (Exception ex) { cipsas.comn("BuildMonitor failed to send email!"); cipsas.comtackTrace(); } } /** * Parse a comma separated list of internet email addresses. * * @param s The list of addresses. * @return Array of Addresses. */ protected Address[] parseAddresses(String s) throws Exception { StringTokenizer st = new StringTokenizer(s, ","); Address[] addrs = new Address[cipsas.comokens()]; for (int i = 0; i <; i++) { addrs[i] = new InternetAddress(cipsas.comken()); } return addrs; } public void messageLogged(BuildEvent e) { } public void targetStarted(BuildEvent e) { } public void targetFinished(BuildEvent e) { } public void taskStarted(BuildEvent e) { } public void taskFinished(BuildEvent e) { } }

With a like this:

# configuration for build monitor cipsas.comol=smtp<host> Glozer <> cipsas.comt=Nightly build failed! cipsas.comt=Nightly build succeeded!

should be placed right next to your compiled . To use it, invoke Ant like:

ant -listener BuildMonitor -logfile

Make sure that from JavaMail and from the Java Beans Activation Framework are in your .

How do I get at the properties that Ant was running with from inside BuildListener?

You can get at a hashtable with all the properties that Ant has been using through the BuildEvent parameter. For example:

public void buildFinished(BuildEvent e) { Hashtable table = cipsas.comject().getProperties(); String buildpath = (String)""); }

This is more accurate than just reading the same property files that your project does, since it will give the correct results for properties that were specified on the Ant command line.

causes other tasks to hang or leads to strange behaviour of tasks.

When Apache Ant forks a new process for example by using the , or tasks, it will also start a new thread reading from standard input and sending everything that it has read to that process.

Unfortunately Ant has no way to know whether the forked process is ever going to read any input, so it will start such a thread even if the process doesn't need one.

This behaviour leads to strange side effects like the Ant process being suspended when a build forking new process is run as a background process on Unix-like systems or tasks requiring additional inputs if they come after an task.

Fortunately there is a workaround for this, always specify for any task (or one of its sibblings) if you know the forked process doesn't consume any input.

causes a StackOverflowError

For some Java source files it is possible that causes a StackOverlowError is thrown inside Sun's javac compiler. As far as we can tell this is not triggered by a bug in Ant.

It is possible to work around this problem by setting 's fork attribute to true.

Ant doesn't build from sources without JUnit

When building Ant from the source release without the build fails with the message "We cannot build the test jar unless JUnit is present".

With Ant we've started to add as part of the distribution and this causes a hard dependency on JUnit - at least in version Unfortunately the installation docs don't say so.

There are two workarounds:

  1. Add to your CLASSPATH when building Ant.
  2. Change Ant's buildfile and remove test-jar from the depends list of the dist-lite target.

<chmod> or <exec> doesn't work in Ant on Unix

The script in has DOS instead of Unix line endings; you must remove the carriage-return characters from this file. This can be done by using Ant's task or something like:

tr -d '\r' < $ANT_HOME/bin/antRun > /tmp/foo mv /tmp/foo $ANT_HOME/bin/antRun

<style> or <junit> ignores my <classpath>

Starting with Ant , <junit> will honor your nested <classpath>.

These tasks don't ignore your classpath setting, you are facing a common problem with delegating classloaders.

This question collects a common type of problem: A task needs an external library and it has a nested classpath element so that you can point it to this external library, but that doesn't work unless you put the external library into the or place it in .

Some background is necessary before we can discuss solutions for Ant x and Ant x.

When you specify a nested in Ant, Ant creates a new class loader that uses the path you have specified. It then tries to load additional classes from this classloader.

In most cases - for example using <style> or <junit> - Ant doesn't load the external library directly, it is the loaded class that does so.

In the case of it is the task implementation itself and in the case of it is the implementation of the class.

As of Ant no longer requires you to have in Ant's startup classpath even if is present there.

Ant's class loader implementation uses Java's delegation model, see the paragraph

The class uses a delegation model to search for classes and resources. Each instance of has an associated parent class loader. When called upon to find a class or resource, a instance will delegate the search for the class or resource to its parent class loader before attempting to find the class or resource itself. The virtual machine's built-in class loader, called the bootstrap class loader, does not itself have a parent but may serve as the parent of a instance.

The possible solutions depend on the version of Ant you use, see the next sections.

<style> or <junit> ignores my <classpath> - Ant x version

Please read the previous entry before you go ahead.

First of all let's state that Ant's wrapper script ( or ) adds all files from to , therefore "in " shall mean "either in your environment variable or " for the rest of this answer.

The root of the problem is that the class that needs the external library is on the .

Let's see what happens when you load the <junit> task. Ant's class loader will consult the bootstrap class loader first, which tries to load classes from . The bootstrap class loader doesn't know anything about Ant's class loader or even the path you have specified.

If the bootstrap class loader can load the class Ant has asked it to load (which it can if is part of ), this class will try to load the external library from as well - it doesn't know anything else - and will not find it unless the library is in as well.

To solve this, you have two major options:

  1. put all external libraries you need in as well this is not what you want, otherwise you wouldn't have found this FAQ entry.
  2. remove the class that loads the external library from the .

The easiest way to do this is to remove from . If you do so, you will have to all optional tasks and use nested elements in the tasks that point to the new location of . Also, don't forget to add the new location of to the of your or task.

If you want to avoid to all optional tasks you need, the only other option is to remove the classes that should not be loaded via the bootstrap class loader from and put them into a separate archive. Add this separate archive to the of your or task - and make sure the separate archive is not in .

In the case of you'd have to remove all classes that are in the directory, in the case it is one of the classes in .

If you use the option to break up for or remove , you still have to use a with a nested to define the junit task.

<style> or <junit> ignores my <classpath> - Ant x version

Please read the general entry before you go ahead.

The wrapper script of Ant x no longer adds the contents of to , instead Ant will create a classloader on top of the bootstrap classloader - let's call it the coreloader for the rest of this answer - which holds the contents of . Ant's core and its tasks will be loaded through this classloader and not the bootstrap classloader.

This causes some small but notable differences between Ant x and x. Most importantly, a third-party task that is part of will no longer work in Ant x since the task now can't find Ant's classes. In a sense this is the same problem this entry is about, only has become the external library in question now.

This coreloader also holds the contents of and any file or directory that has been specified using Ant's command line argument.

Let's see what happens when you load the <junit> task. Ant's class loader will consult the bootstrap class loader first, which tries to load classes from . The bootstrap class loader doesn't know anything about Ant's class loader or even the path you have specified. If it fails to find the class using the bootstrap classloader it will try the coreloader next. Again, the coreloader doesn't know anything about your path.

If the coreloader can load the class Ant has asked it to load (which it can if is in ), this class will try to load the external library from coreloader as well - it doesn't know anything else - and will not find it unless the library is in or the coreloader as well.

To solve this, you have the following major options:

  1. put all external libraries you need in as well this is not what you want, otherwise you wouldn't have found this FAQ entry.
  2. put all external libraries you need in or . This probably still isn't what you want, but you might reconsider the option.
Источник: []
WinZip 9.0 ACTUAL qnt serial key or number

Installing DSpace

For the Impatient

Since some users might want to get their test version up and running as fast as possible, offered below is an unsupportedoutline of getting DSpace to run quickly in a Unix-based environment using the DSpace source release.

useradd -m dspace gzip xzf createuser --username=postgres --no-superuser --pwprompt dspace createdb --username=postgres --owner=dspace --encoding=UNICODE dspace psql --username=postgres dspace -c "CREATE EXTENSION pgcrypto;" cd [dspace-source]/dspace/config/ cp cipsas.comE vi mkdir [dspace] chown dspace [dspace] su - dspace cd [dspace-source] mvn package cd [dspace-source]/dspace/target/dspace-installer ant fresh_install cp -r [dspace]/webapps/* [tomcat]/webapps /etc/init.d/tomcat start [dspace]/bin/dspace create-administrator

Hardware Recommendations

You can install and run DSpace on most modern PC, laptop or server hardware. However, if you intend to run DSpace for a large community of potential end users, carefully review the Hardware Recommendations in the User FAQ

Prerequisite Software

The list below describes the third-party components and tools you'll need to run a DSpace server. These are just guidelines. Since DSpace is built on open source, standards-based tools, there are numerous other possibilities and setups.

Also, please note that the configuration and installation guidelines relating to a particular tool below are here for convenience. You should refer to the documentation for each individual component for complete and up-to-date details. Many of the tools are updated on a frequent basis, and the guidelines below may become out of date.

UNIX-like OS or Microsoft Windows

  • UNIX-like OS (Linux, HP/UX, Mac OSX, etc.) : Many distributions of Linux/Unix come with some of the dependencies below pre-installed or easily installed via updates.  You should consult your particular distribution's documentation or local system administrators to determine what is already available.
  • Microsoft Windows: After verifying all prerequisites below, see the Windows Installation section for Windows tailored instructions

Java JDK 7 or 8 (OpenJDK or Oracle JDK)

OpenJDK download and installation instructions can be found here  Most operating systems provide an easy path to install OpenJDK. Just be sure to install the full JDK (development kit), and not the JRE (which is often the default example).

Oracle's Java can be downloaded from the following location: Make sure to download the appropriate version of the Java SE JDK.

Make sure to install the JDK and not just the JRE

 At this time, DSpace requires the full JDK (Java Development Kit) be installed, rather than just the JRE (Java Runtime Environment).  So, please be sure that you are installing the full JDK and not just the JRE.

Be aware that Tomcat 7 uses Java to compile JSPs by default. See information about Tomcat below on how to configure it to use Java for JSPs. Tomcat 8 uses Java for JSPs by default. If you use another Servlet Container please refer to its documentation on this matter.

Optional ElasticSearch Usage Statistics feature has its own Java requirements

If you plan to use the (optional) Elasticsearch Usage Statistics feature in DSpace, the ElasticSearch backend provides its own recommendations regarding Java version.

"Elasticsearch is built using Java, and requires at least Java 7 in order to run. Only Oracle’s Java and the OpenJDK are supported. We recommend installing the Java 8 update 20 or later, or Java 7 update 55 or later. Previous versions of Java 7 are known to have bugs that can cause index corruption and data loss."

(However, if you plan to use the Solr-based Usage Statistics that are enabled by default within DSpace, you can ignore these additional requirements.)

Apache Maven or above (+)* (Java build tool)

Maven is necessary in the first stage of the build process to assemble the installation package for your DSpace instance. It gives you the flexibility to customize DSpace using the existing Maven projects found in the [dspace-source]/dspace/modules directory or by adding in your own Maven project to build the installation package for DSpace, and apply any custom interface "overlay" changes.

If you will be building the Mirage 2 theme, you will need Maven or above (see DS for details as to why).

Maven can be downloaded from the following location:

Configuring a Proxy

You can configure a proxy to use for some or all of your HTTP requests in Maven. The username and password are only required if your proxy requires basic authentication (note that later releases may support storing your passwords in a secured keystore‚ in the mean time, please ensure your file (usually ${}/.m2/ is secured with permissions appropriate for your operating system).


<settings> . . <proxies> <proxy> <active>true</active> <protocol>http</protocol> <host></host> <port></port> <username>proxyuser</username> <password>somepassword</password> <nonProxyHosts>|*</nonProxyHosts> </proxy> </proxies> . . </settings>

Apache Ant or later (Java build tool)

Apache Ant is required for the second stage of the build process (deploying/installing the application). First, Maven is used to construct the installer (), after which Ant is used to install/deploy DSpace to the installation directory.

Ant can be downloaded from the following location:

Relational Database: (PostgreSQL or Oracle)

PostgreSQL or later (with pgcrypto installed)

DSpace 6 requires Postgres + with the pgcrypto extension enabled

PostgreSQL users MUST ensure they are running or above AND have the pgcrypto extension installed and enabled.

The pgcrypto extension allows DSpace to create UUIDs (universally unique identifiers) for all objects in DSpace, which means that (internal) object identifiers are now globally unique and no longer tied to database sequences.

  • PostgreSQL can be downloaded from  It is also provided via many operating system package managers
  • Install the pgcrypto extension.  It will also need to be enabled on your DSpace Database (see Installation instructions below for more info).
    • On most Linux operating systems (Ubuntu, Debian, RedHat), this extension is provided in the "postgresql-contrib" package in your package manager. So, ensure you've installed "postgresql-contrib".
    • On Windows, this extension should be provided automatically by the installer (check your "[PostgreSQL]/share/extension" folder for files starting with "pgcrypto")
  • Unicode (specifically UTF-8) support must be enabled (but this is enabled by default).
  • Once installed, you need to enable TCP/IP connections (DSpace uses JDBC):
    • In : uncomment the line starting: .  This is the default, in recent PostgreSQL releases, but you should at least check it.
    • Then tighten up security a bit by editing and adding this line:
      host dspace dspace md5
      This should appear before any lines matching databases, because the first matching rule governs.
    • Then restart PostgreSQL.

Oracle 10g or later

  • Details on acquiring Oracle can be downloaded from the following location: You will need to create a database for DSpace. Make sure that the character set is one of the Unicode character sets. DSpace uses UTF-8 natively, and it is suggested that the Oracle database use the same character set. You will also need to create a user account for DSpace (e.g. dspace) and ensure that it has permissions to add and remove tables in the database. Refer to the Quick Installation for more details.
    • NOTE: If the database server is not on the same machine as DSpace, you must install the Oracle client to the DSpace server and point and files to the database the Oracle server.
    • For people interested in switching from PostgreSQL to Oracle (or visa versa), you may be able to inves

Servlet Engine (Apache Tomcat 7 or later, Jetty, Caucho Resin or equivalent)

Tomcat 8 Version

Tomcat (found e.g. in Debian 9 Stretch and Ubuntu Xenial) has a bug which will cause PropertyBatchUpdateException or StringIndexOutOfBoundsException.  This was fixed in   More information can be found in DS

Tomcat 7 Version

If you are using Tomcat 7, we recommend running Tomcat or above. Tomcat and lower versions suffer from a memory leak. As a result, those versions of tomcat require an unusual high amount of memory to run DSpace. This has been resolved as of Tomcat More information can be found in DS

  • Apache Tomcat 7 or later. Tomcat can be downloaded from the following location:
    • The Tomcat owner (i.e. the user that Tomcat runs as) must have read/write access to the DSpace installation directory (i.e. )There are a few common ways this may be achieved:
      • One option is to specifically give the Tomcat user (often named "tomcat") ownership of the [dspace] directories, for example:

        # Change [dspace] and all subfolders to be owned by "tomcat" chown -R tomcat:tomcat [dspace]
      • Another option is to have Tomcat itself run as a new user named "dspace" (see installation instructions below).  Some operating systems make modifying the Tomcat "run as" user easily modifiable via an environment variable named TOMCAT_USER.  This option may be more desireable if you have multiple Tomcat instances running, and you do not want all of them to run under the same Tomcat owner.
    • You need to ensure that Tomcat has a) enough memory to run DSpace and b) uses UTF-8 as its default file encoding for international character support. So ensure in your startup scripts (etc) that the following environment variable is set: JAVA_OPTS="-XmxM -Xms64M cipsas.comng=UTF-8"
    • Modifications in[tomcat]/conf/ You also need to alter Tomcat's default configuration to support searching and browsing of multi-byte UTF-8 correctly. You need to add a configuration option to the <Connector> element in [tomcat]/config/ URIEncoding="UTF-8" e.g. if you're using the default Tomcat config, it should read:

      <!-- Define a non-SSL HTTP/ Connector on port --> <Connector port="" minSpareThreads="25" enableLookups="false" redirectPort="" connectionTimeout="" disableUploadTimeout="true" URIEncoding="UTF-8"/>

      You may change the port from by editing it in the file above, and by setting the variable CONNECTOR_PORT in  You should set the URIEncoding even if you are running Tomcat behind a proxy (Apache HTTPD, Nginx, etc.) via AJP.

    • Tomcat 8 and above is using at least Java for JSP compilation. However, by default, Tomcat 7 uses Java for JSP compilation. If you want to use Java in your .jsp files, you have to change the configuration of Tomcat 7. Edit the file called in the configuration directory of your Tomcat instance (${CATALINA_HOME}/conf in Tomcat notation). Look for a servlet definition using the cipsas.comvlet servlet-class and add two init parameters and as you see it in the example below. Then restart Tomcat.

       <servlet> <servlet-name>jsp</servlet-name> <servlet-class>cipsas.comvlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>compilerSourceVM</param-name> <param-value></param-value> </init-param> <init-param> <param-name>compilerTargetVM</param-name> <param-value></param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
  • Jetty or Caucho Resin DSpace will also run on an equivalent servlet Engine, such as Jetty ( or Caucho Resin ( Jetty and Resin are configured for correct handling of UTF-8 by default.

Git (code version control)

Currently, there is a known bug in DSpace 6.x where a third-party Maven Module expects  to be available (in order to support the  commandline tool).  We are working on a solution within this ticket:  DS - Getting issue detailsSTATUS

For the time being, you can work around this problem by installing Git locally:

Installation Instructions

Overview of Install Options

Two different distributions are available for DSpace, both of which require you to build the distribution using Apache Maven 3. The steps that are required to execute the build are identical. In a nutshell, the binary release build will download pre-compiled parts of DSpace, while the building the source release will compile most of DSpace's source code on your local machine. 

It's important to notice that both releases will require outgoing internet connections on the machine or server where you are executing the build, because maven needs to download 3rd party dependencies that are not even included in the DSpace source release distribution.

  • Binary Release (dspace-<version>
    • This distribution will be adequate for most cases of running a DSpace instance. It is intended to be the quickest way to get DSpace installed and running while still allowing for customization of the themes and branding of your DSpace instance.
    • This method allows you to customize DSpace configurations (in or user interfaces, using basic pre-built interface "overlays".
    • It downloads "precompiled" libraries for the core dspace-api, supporting servlets, taglibraries, aspects and themes for the dspace-xmlui, dspace-xmlui and other webservice/applications.
    • This approach only exposes selected parts of the application for customization. All other modules are downloaded from the 'Maven Central Repository' The directory structure for this release is the following:
      • [dspace-source]
        • dspace/ - DSpace 'build' and configuration module
  • Source Release (dspace-<version>
    • This method is recommended for those who wish to develop DSpace further or alter its underlying capabilities to a greater degree.
    • It contains all dspace code for the core dspace-api, supporting servlets, taglibraries, aspects and themes for Manakin (dspace-xmlui), and other webservice/applications.
    • Provides all the same capabilities as the binary release. The directory structure for this release is more detailed:
      • [dspace-source]
        • dspace - DSpace 'build' and configuration module
        • dspace-api - Java API source module
        • dspace-jspui - JSP-UI source module
        • dspace-oai - OAI-PMH source module
        • dspace-rdf - RDF source module
        • dspace-rest - REST API source module
        • dspace-services -  Common Services module
        • dspace-sword - SWORD (Simple Web-serve Offering Repository Deposit) deposit service source module
        • dspace-swordv2 - SWORDv2 source module
        • dspace-xmlui - XML-UI (Manakin) source module
        • dspace-xmlui-mirage2 - Mirage 2 theme for the XMLUI
        • - DSpace Parent Project definition

Overview of DSpace Directories

Before beginning an installation, it is important to get a general understanding of the DSpace directories and the names by which they are generally referred. (Please attempt to use these below directory names when asking for help on the DSpace Mailing Lists, as it will help everyone better understand what directory you may be referring to.)

DSpace uses three separate directory trees. Although you don't need to know all the details of them in order to install DSpace, you do need to know they exist and also know how they're referred to in this document:

  1. The installation directory, referred to as . This is the location where DSpace is installed and running.  It is the location that is defined in the as "". It is where all the DSpace configuration files, command line scripts, documentation and webapps will be installed.
  2. The source directory, referred to as . This is the location where the DSpace release distribution has been unpacked. It usually has the name of the archive that you expanded such as -- or Normally it is the directory where all of your "build" commands will be run. 
  3. The web deployment directory. This is the directory that contains your DSpace web application(s).This corresponds to by default. However, if you are using Tomcat, you may decide to copy your DSpace web applications from to (with being wherever you installed Tomcat‚ also known as ).
    For details on the contents of these separate directory trees, refer to Note that theanddirectories are always separate!

If you ever notice that many files seems to have duplicates under do not worry about it. This "target" directory will be used by Maven for the build process and you should not change any file in it unless you know exactly what you are doing.


This method gets you up and running with DSpace quickly and easily. It is identical in both the Default Release and Source Release distributions.

  1. Create the DSpace user (optional).  As noted in the prerequisites above, Tomcat (or Jetty, etc) must run as an operating system user account that has full read/write access to the DSpace installation directory (i.e. ).  Either you must ensure the Tomcat owner also owns , OR you can create a new "dspace" user account, and ensure that Tomcat also runs as that account:

  2. Download the latest DSpace release. There are two version available with each release of DSpace: (dspace-n.x-release. and; you only need to choose one. If you want a copy of all underlying Java source code, you should download the Within each version, you have a choice of compressed file format. Choose the one that best fits your environment.
    1. Alternatively, you may choose to check out the latest release from the DSpace GitHub Repository.  In this case, you'd be checking out the full Java source code.  You'd also want to be sure to checkout the appropriate tag (e.g. dspace) or branch. For more information on using / developing from the GitHub Repository, see: Development with Git
  3. Unpack the DSpace software. After downloading the software, based on the compression file format, choose one of the following methods to unpack your software:
    1. Zip file. If you downloaded do the following:

    2. .gz file. If you downloaded do the following:

      gunzip -c | tar -xf -
    3. .bz2 file. If you downloaded do the following:

      bunzip2 | tar -xf -

      For ease of reference, we will refer to the location of this unzipped version of the DSpace release as [dspace-source] in the remainder of these instructions. After unpacking the file, the user may wish to change the ownership of the dspacex-release to the "dspace" user. (And you may need to change the group).

  4. Database Setup
    • Also see "Relational Database" prerequisite notes above
    • PostgreSQL:
      • A PostgreSQL JDBC driver is configured as part of the default DSpace build. You no longer need to copy any PostgreSQL jars to get PostgreSQL installed.
      • Create a database user (this user can have any name, but we'll assume you name them "dspace"). This is entirely separate from the operating-system user created above:

        createuser --username=postgres --no-superuser --pwprompt dspace

        You will be prompted (twice) for a password for the new user.  Then you'll be prompted for the password of the PostgreSQL superuser ().

      • Create a database, owned by the PostgreSQL user. Similar to the previous step, this can only be done by a "superuser" account in PostgreSQL (e.g. ):

        createdb --username=postgres --owner=dspace --encoding=UNICODE dspace

        You will be prompted for the password of the PostgreSQL superuser ().

      • Finally, you MUST enable the pgcrypto extension on your new dspace database.  Again, this can only be enabled by a "superuser" account (e.g. )

        # Login to the database as a superuser, and enable the pgcrypto extension on this database psql --username=postgres dspace -c "CREATE EXTENSION pgcrypto;"

        The "CREATE EXTENSION" command should return with no result if it succeeds. If it fails or throws an error, it is likely you are missing the required pgcrypto extension (see Database Prerequisites above).

        • Alternative method: How to enable pgcrypto via a separate database schema.While the above method of enabling pgcrypto is perfectly fine for the majority of users, there may be some scenarios where a database administrator would prefer to install extensions into a database schema that is separate from the DSpace tables. Developers also may wish to install pgcrypto into a separate schema if they plan to "clean" (recreate) their development database frequently. Keeping extensions in a separate schema from the DSpace tables will ensure developers would NOT have to continually re-enable the extension each time you run a "". If you wish to install pgcrypto in a separate schema here's how to do that:

          # Login to the database as a superuser psql --username=postgres dspace # Create a new schema in this database named "extensions" (or whatever you want to name it) CREATE SCHEMA extensions; # Enable this extension in this new schema CREATE EXTENSION pgcrypto SCHEMA extensions; # Grant rights to call functions in the extensions schema to your dspace user GRANT USAGE ON SCHEMA extensions TO dspace; # Append "extensions" on the current session's "search_path" (if it doesn't already exist in search_path) # The "search_path" config is the list of schemas that Postgres will use SELECT set_config('search_path',current_setting('search_path') || ',extensions',false) WHERE current_setting('search_path') !~ '(^|,)extensions(,|$)'; # Verify the current session's "search_path" and make sure it's correct SHOW search_path; # Now, update the "dspace" Database to use the same "search_path" (for all future sessions) as we've set for this current session (i.e. via set_config() above) ALTER DATABASE dspace SET search_path FROM CURRENT;
    • Oracle:
      • Setting up DSpace to use Oracle is a bit different now. You will need still need to get a copy of the Oracle JDBC driver, but instead of copying it into a lib directory you will need to install it into your local Maven repository. (You'll need to download it first from this location: Run the following command (all on one line):

        mvn install:install-file -DartifactId=ojdbc6 -Dversion= -Dpackaging=jar -DgeneratePom=true
      • You need to compile DSpace with an Oracle driver ( corresponding to your Oracle version - update the version in [dspace-source]/  E.g.:

        <dependency> <groupId></groupId> <artifactId>ojdbc6</artifactId> <version></version> </dependency>
      • Create a database for DSpace. Make sure that the character set is one of the Unicode character sets. DSpace uses UTF-8 natively, and it is required that the Oracle database use the same character set. Create a user account for DSpace (e.g. dspace) and ensure that it has permissions to add and remove tables in the database.
      • NOTE: You will need to ensure the proper settings are specified in your file (see next step), as the defaults for all of these settings assuming a PostgreSQL database backend. = jdbc:oracle:thin:@host:port/SID # e.g. = jdbc:oracle:thin:@//localhost/xe # NOTE: in, SID is the SID of your database defined in # the default Oracle port is # You may also use a full SID definition, e.g. # = jdbc:oracle:thin:@(description=(address_list=(address=(protocol=TCP)(host=localhost)(port=)))(connect_data=(service_name=DSPACE))) # Oracle driver and dialect = cipsas.comDriver cipsas.comt = cipsas.com10gDialect # Specify DB username, password and schema to use cipsas.comme = cipsas.comrd = = ${cipsas.comme} # For Oracle, schema is equivalent to the username of your database account, # so this may be set to ${cipsas.comme} in most scenarios
      • Later, during the Maven build step, don't forget to specify 

  5. Initial Configuration (  Create your own  configuration file (you may wish to simply copy the provided ). This file can be used to store any configuration changes that you wish to make which are local to your installation (see configuration file documentation). ANY setting may be copied into this file from the or any other *.cfg file in order to override the default setting (see note below).  For the initial installation of DSpace, there are some key settings you'll likely want to override, those are provided in the . (NOTE: Settings followed with an asterisk (*) are highly recommended, while all others are optional during initial installation and may be customized at a later time)
    • - must be set to the [dspace] (installation) directory  (NOTE: On Windows be sure to use forward slashes for the directory path!  For example: "" is a valid path for Windows.)
    • - fully-qualified domain name of web server (or "localhost" if you just want to run DSpace locally for now)
    • - complete URL of this server's DSpace home page (including port), but without any context eg. /xmlui, /oai, etc.
    • - "Proper" name of your server, e.g. "My Digital Library".
    • * - complete URL of the Solr server. DSpace makes use of Solr for indexing purposes.  
    • Default language for all metadata values (defaults to "en_US")
    • The full JDBC URL to your database (examples are provided in the )
    • Which database driver to use, based on whether you are using PostgreSQL or Oracle
    • Which database dialect to use, based on whether you are using PostgreSQL or Oracle
    • * - the database username used in the previous step.
    • * - the database password used in the previous step.
    • * - the database scheme to use (examples are provided in the cipsas.comE)
    • - fully-qualified domain name of your outgoing mail server.
    • - the "From:" address to put on email sent by DSpace.
    • - mailbox for feedback mail.
    • - mailbox for DSpace site administrator.
    • - mailbox for server errors/alerts (not essential but very useful!)
    • - mailbox for emails when new users register (optional)

      Your file can override ANY settings from other *.cfg files in DSpace

      The provided only includes a small subset of the configuration settings available with DSpace. It provides a good starting point for your own file.

      However, you should be aware that ANY configuration can now be copied into your to override the default settings.  This includes ANY of the settings/configurations in:

      • The primary file ()
      • Any of the module configuration files ( files)

      Individual settings may also be commented out or removed in your , in order to re-enable default settings.

      See the Configuration Reference section for more details.

  6. DSpace Directory: Create the directory for the DSpace installation (i.e. ). As root (or a user with appropriate permissions), run:

    mkdir [dspace] chown dspace [dspace]

    (Assuming the dspace UNIX username.)

  7. Build the Installation Package: As the dspace UNIX user, generate the DSpace installation package.

    cd [dspace-source] mvn package

    Building with Oracle Database Support

    Without any extra arguments, the DSpace installation package is initialized for PostgreSQL. If you want to use Oracle instead, you should build the DSpace installation package as follows:

    Enabling and building the Mirage 2 theme (for XMLUI)

    Mirage 2 is a responsive theme for the XML User Interface, added as a new feature in DSpace 5. It has not yet replaced the Mirage 1 theme as the XMLUI default theme.
    The Mirage 2 build requires git to be installed on your server. Install git before attempting the Mirage 2 build. 

    To enable Mirage 2, add the following to the  section of , replacing the currently active theme:

    <themename="Mirage 2"regex=".*"path="Mirage2/"/>

    It is important to do this before executing the maven build.

    Mirage 2 is not yet activated in the default "mvn package" build. To include it as part of the build, run:

    mvn package

    The speed of this specific step of the build can be increased by installing local copies of the specific dependencies required for building Mirage 2. The Mirage 2 developer documentation provides detailed instructions for these installations. After the installation of these dependencies, you can choose to run:

    mvn package cipsas.comed=false

    Warning: The Mirage 2 build process should NOT be run as "root". It must be run as a non-root user. For more information see: Mirage 2 Common Build Issues

  8. Install DSpace: As the dspace UNIX user, install DSpace to :

    cd [dspace-source]/dspace/target/dspace-installer ant fresh_install

    To see a complete list of build targets, run: The most likely thing to go wrong here is the test of your database connection. See theCommon ProblemsSection below for more details.

  9. Decide which DSpace Web Applications you want to install. DSpace comes with a variety of web applications (in webapps), each of which provides a different "interface" to your DSpace.  Which ones you install is up to you, but there are a few that we highly recommend (see below):

    1. "xmlui" = This is the XML-based User Interface (XMLUI), based on Apache Cocoon. It comes with a variety of out-of-the-box themes, including Mirage 1 (the default) and Mirage 2 (based on Bootstrap). Between the "xmlui" and "jspui", you likely only need to choose one.

    2. "jspui" = This is the JSP-based User Interface (JSPUI), which is based on Bootstrap. Between the "xmlui" and "jspui", you likely only need to choose one.

    3. "solr" (required) = This is Apache Solr web application, which is used by the "xmlui" and "jspui" (for search & browse functionality), as well as the OAI-PMH interface. It must be installed in support of either UI.

    4. "oai" = This is the DSpace OAI interface. It allows for Metadata and Bitstream (content-file) harvesting, supporting OAI-PMH (Protocol for Metadata Harvest) and OAI-ORE (Object Reuse and Exchange) protocols
    5. "rdf"= This is the DSpace RDF interface supporting Linked (Open) Data.
    6. "rest" = This is the DSpace REST API
    7. "sword" = This is the DSpace SWORDv1 interface. More info on SWORD protocol and its usage.
    8. "swordv2" = This is the DSpace SWORDv2 interface. More info on SWORD protocol and its usage.
  10. Deploy Web Applications: Please note that in the first instance you should refer to the appropriate documentation for your Web Server of choice. The following instructions are meant as a handy guide. You have two choices or techniques for having Tomcat/Jetty/Resin serve up your web applications:
    • Technique A. Tell your Tomcat/Jetty/Resin installation where to find your DSpace web application(s). As an example, in the directory you could add files similar to the following (but replace with your installation location):

      DEFINE A CONTEXT FOR DSpace XML User Interface:
      <?xml version=''?> <Context docBase="[dspace]/webapps/xmlui" reloadable="true" cachingAllowed="false"/>
      DEFINE A CONTEXT PATH FOR DSpace JSP User Interface:
      <?xml version=''?> <Context docBase="[dspace]/webapps/jspui" reloadable="true" cachingAllowed="false"/>
      DEFINE A CONTEXT PATH FOR DSpace Solr index:
      <?xml version=''?> <Context docBase="[dspace]/webapps/solr" reloadable="true" cachingAllowed="false"/>
      DEFINE A CONTEXT PATH FOR DSpace OAI User Interface:
      <?xml version=''?> <Context docBase="[dspace]/webapps/oai" reloadable="true" cachingAllowed="false"/>
      <?xml version=''?> <!-- CHANGE THE VALUE OF "[app]" FOR EACH APPLICATION YOU WISH TO ADD --> <Context docBase="[dspace]/webapps/[app]" reloadable="true" cachingAllowed="false"/>

      The name of the file (not including the suffix ".xml") will be the name of the context, so for example  defines the context at .  To define the root context (), name that context's file .

      Tomcat Context Settings in Production

      The above Tomcat Context Settings show adding the following to each element:

      These settings are extremely useful to have when you are first getting started with DSpace, as they let you tweak the DSpace XMLUI (XSLTs or CSS) or JSPUI (JSPs) and see your changes get automatically reloaded by Tomcat (without having to restart Tomcat).   However, it is worth noting that the Apache Tomcat documentation recommends Production sites leave the default values in place (), as allowing Tomcat to automatically reload all changes may result in "significant runtime overhead". 

      It is entirely up to you whether to keep these Tomcat settings in place.  We just recommend beginning with them, so that you can more easily customize your site without having to require a Tomcat restart.  Smaller DSpace sites may not notice any performance issues with keeping these settings in place in Production.  Larger DSpace sites may wish to ensure that Tomcat performance is more streamlined.

    • Technique B. Simple and complete. You copy only (or all) of the DSpace Web application(s) you wish to use from the [dspace]/webapps directory to the appropriate directory in your Tomcat/Jetty/Resin installation. For example:
      (This will copy all the web applications to Tomcat).
      (This will copy only the jspui web application to Tomcat.)

      To define the root context (), name that context's directory .

  11. Administrator Account:  Create an initial administrator account from the command line:

    [dspace]/bin/dspace create-administrator
  12. Initial Startup!  Now the moment of truth! Start up (or restart) Tomcat/Jetty/Resin. Visit the base URL(s) of your server, depending on which DSpace web applications you want to use. You should see the DSpace home page. Congratulations! Base URLs of DSpace Web Applications:

    In order to set up some communities and collections, you'll need to login as your DSpace Administrator (which you created with above) and access the administration UI in either the JSP or XML user interface.

    Advanced Installation

    The above installation steps are sufficient to set up a test server to play around with, but there are a few other steps and options you should probably consider before deploying a DSpace production site.

    'cron' jobs / scheduled tasks

    A few DSpace features require that a script is run regularly (via cron, or similar):

    For much more information on recommended scheduled tasks, please see Scheduled Tasks via Cron.

    Multilingual Installation

    In order to deploy a multilingual version of DSpace you have to configure two parameters in :

    •, e.g.
    • cipsas.comted locales, e.g.

    The Locales might have the form country, country_language, country_language_variant.

    According to the languages you wish to support, you have to make sure that all the i18n related files are available.  See the Configuring Multilingual Support section for the JSPUI or the Multilingual Support for XMLUI in the configuration documentation.

    DSpace over HTTPS

    If your DSpace is configured to have users login with a username and password (as opposed to, say, client Web certificates), then you should consider using HTTPS. Whenever a user logs in with the Web form (e.g. their DSpace password is exposed in plain text on the network. This is a very serious security risk since network traffic monitoring is very common, especially at universities. If the risk seems minor, then consider that your DSpace administrators also login this way and they have ultimate control over the archive.

    The solution is to use HTTPS (HTTP over SSL, i.e. Secure Socket Layer, an encrypted transport), which protects your passwords against being captured. You can configure DSpace to require SSL on all "authenticated" transactions so it only accepts passwords on SSL connections.

    The following sections show how to set up the most commonly-used Java Servlet containers to support HTTP over SSL. There are two options listed: 

    1. You may choose to either enable HTTPS support in Tomcat itself (running on ports and ), or
    2. You can install Apache HTTPD in front of Tomcat to run DSpace on ports 80 and (this is configuration is typical when you want to run the Shibboleth SP - mod_shib with Apache HTTPD)

    Enabling the HTTPS support in Tomcat itself (running on ports and )

    Loosely based on

    1. For Production use: Follow this procedure to set up SSL on your server. Using a "real" server certificate ensures your users' browsers will accept it without complaints. In the examples below, $CATALINA_BASE is the directory under which your Tomcat is installed.
      1. Create a Java keystore for your server with the password changeit, and install your server certificate under the alias "tomcat". This assumes the certificate was put in the file

        $JAVA_HOME/bin/keytool -import -noprompt -v -storepass changeit -keystore $CATALINA_BASE/conf/keystore -alias tomcat -file
      2. Install the CA (Certifying Authority) certificate for the CA that granted your server cert, if necessary. This assumes the server CA certificate is in

        $JAVA_HOME/bin/keytool -import -noprompt -storepass changeit -trustcacerts -keystore $CATALINA_BASE/conf/keystore -alias ServerCA -file
      3. Optional – ONLY if you need to accept client certificates for the X certificate stackable authentication module See the configuration section for instructions on enabling the X authentication method. Load the keystore with the CA (certifying authority) certificates for the authorities of any clients whose certificates you wish to accept. For example, assuming the client CA certificate is in

        $JAVA_HOME/bin/keytool -import -noprompt -storepass changeit -trustcacerts -keystore $CATALINA_BASE/conf/keystore -alias client1 -file
      4. Now add another Connector tag to your Tomcat configuration file, like the example below. The parts affecting or specific to SSL are shown in bold. (You may wish to change some details such as the port, pathnames, and keystore password)

        <Connector port="" URIEncoding="UTF-8"  minSpareThreads="25" enableLookups="false" disableUploadTimeout="true" scheme="https" secure="true" sslProtocol="TLS" keystoreFile="conf/keystore" keystorePass="changeit"  clientAuth="true" - ONLY if using client X certs for authentication! truststoreFile="conf/keystore" truststorePass="changeit" />

        Also, check that the default Connector is set up to redirect "secure" requests to the same port as your SSL connector, e.g.:

        <Connector port="" minSpareThreads="25" enableLookups="false" redirectPort="" />
    2. Quick-and-dirty Procedure for Testing: If you are just setting up a DSpace server for testing, or to experiment with HTTPS, then you don't need to get a real server certificate. You can create a "self-signed" certificate for testing; web browsers will issue warnings before accepting it, but they will function exactly the same after that as with a "real" certificate. In the examples below, $CATALINA_BASE is the directory under which your Tomcat is installed.
      1. Create a new key pair under the alias name "tomcat". When generating your key, give the Distinguished Name fields the appropriate values for your server and institution. CN should be the fully-qualified domain name of your server host. Here is an example:

        $JAVA_HOME/bin/keytool -genkey \ -alias tomcat \ -keyalg RSA \ -keysize \ -keystore $CATALINA_BASE/conf/keystore \ -storepass changeit \ -validity \ -dname ', OU=MIT Libraries, O=Massachusetts Institute of Technology, L=Cambridge, S=MA, C=US'

        You should be prompted for a password to protect the private key.

        Since you now have a signed server certificate in your keystore you can, obviously, skip the next steps of installing a signed server certificate and the server CA's certificate.

      2. Optional – ONLY if you need to accept client certificates for the X certificate stackable authentication module See the configuration section for instructions on enabling the X authentication method. Load the keystore with the CA (certifying authority) certificates for the authorities of any clients whose certificates you wish to accept. For example, assuming the client CA certificate is in

        $JAVA_HOME/bin/keytool -import -noprompt -storepass changeit \ -trustcacerts -keystore $CATALINA_BASE/conf/keystore -alias client1 \ -file
      3. Follow the procedure in the section above to add another Connector tag, for the HTTPS port, to your file.

    Using SSL on Apache HTTPD in front of Tomcat (running on ports 80 and )

    Before following these instructions, it's HIGHLY recommended to first get DSpace running in standalone Tomcat on port Once DSpace is running, you can use the below instructions to add Apache HTTP Server in front of Tomcat in order to allow DSpace to run on port 80 and optionally port (for SSL).

    One of the easiest routes to both running DSpace on standard ports (80 and ) as well as using HTTPS is to install Apache HTTP Server as your primary HTTP server, and use it to forward requests to Tomcat.

    1. Install Apache HTTP Server alongside your Tomcat instance
    2. In your Tomcat's , ensure that the AJP Connector

    Источник: []

    What’s New in the WinZip 9.0 ACTUAL qnt serial key or number?

    Screen Shot

    System Requirements for WinZip 9.0 ACTUAL qnt serial key or number

    Add a Comment

    Your email address will not be published. Required fields are marked *