2011-09-07 10 views
8

私の戦争ではXMLからJSONへのlibを使う必要がある。 プロジェクトに依存関係が必要であることを説明するtutorialに続きました。Ant/Eclipseはアーティファクトに関して文句を言う:依存関係

は、しかし、私は私のアリbuild.xml(戦争を作成するために使用されるファイル)に以下を追加する場合、Eclipseは、artifact:dependencies文句を言うことは、次のエラーメッセージが持っている.I :好きではないように思える:

プレフィックスバインドされていない要素artifact:dependenciesためartifact ...

<artifact:dependencies filesetId="dependency.fileset" 
    sourcesFilesetId="sources.dependency.fileset" 
    javadocFilesetId="javadoc.dependency.fileset" 
    versionsId="dependency.versions"> 
    <!-- DEPENCIES GO HERE --> 
</artifact:dependencies> 

任意のアイデア?

UPDATE

私は同じ問題を持つメモリ内のポンポンを定義しようとしているがあります...要素バインドされていないartifact:pomため

<artifact:pom id="mypom" groupId="org.acme" artifactId="project1" version="1.0"> 
    <dependency groupId="junit" artifactId="junit" version="4.1"/> 
    <dependency groupId="org.codehaus.plexus" artifactId="plexus-utils" version="1.5.5"/> 
    <license name="apache" url="http://www.apache.org"/> 
</artifact:pom> 

プレフィックスartifact

更新2

ant/libにmaven-ant jarをインストールし、build.xmlを変更してアーティファクトの定義が含まれるようにしましたが、実行中にエラーメッセージが表示されます。

<project name="test" default="install" xmlns:artifact="antlib:org.apache.maven.artifact.ant"> 

<artifact:dependencies pathId="dependency.classpath"> 
    <dependency> 
     <groupId>net.sf.json-lib</groupId> 
     <artifactId>json-lib</artifactId> 
     <version>2.3</version> 
     <type>jar</type> 
     <classifier>jdk15</classifier> 
     <scope>compile</scope> 
     </dependency> 
     ... 

Eclipseが与えたエラーメッセージです:達人-ANTジャーが-D:\eclipse\plugins\org.apache.ant_1.8.2.v20110505-1300\lib

UPDATE 3

に存在

BUILD FAILED 
D:\J2EE\workspace\Test\build.xml:3: Problem: failed to create task or type antlib:org.apache.maven.artifact.ant:dependencies 
Cause: The name is undefined. 
Action: Check the spelling. 
Action: Check that any custom tasks/types have been declared. 
Action: Check that any <presetdef>/<macrodef> declarations have taken place. 
No types or tasks have been defined in this namespace yet 
This appears to be an antlib declaration. 
    Action: Check that the implementing library exists in one of: 
    -D:\eclipse\plugins\org.apache.ant_1.8.2.v20110505-1300\lib 
    -C:\Documents and Settings\luc\.ant\lib 
    -a directory added on the command line with the -lib argument 

これは、build.xmlファイルであり、I使用しています。

<!-- 
<project name="Monitoring" default="install" xmlns:artifact="urn:maven-artifact-ant" xmlns:test="urn:test-tasks"> 
--> 
<project name="Monitoring" default="install" xmlns:artifact="antlib:org.apache.maven.artifact.ant"> 

<!-- project-specific variables --> 
<property environment="env" /> 
<property name="project_home" value="D:\J2EE\workspace\Monitoring"/> 
<property name="webapp.dir" value="${project_home}/target" /> 
<property name="jboss.dir" value="D:\J2EE\jboss\standalone\deployments" /> 
<property name="package.name" value="monitoring.war" /> 
<property name="lib.dir" value="${project_home}/lib" /> 
<property name="src.dir" value="${project_home}/src" /> 
<property name="resources.dir" value="${project_home}/resources" /> 
<property name="dest.dir" value="${project_home}/target" /> 
<property name="package.file" value="${dest.dir}/${package.name}" /> 

<!-- put everything in a temp folder with the right structure during the build --> 
<property name="temp.dir" value="${project_home}/temp" /> 
<property name="temp.dir.web-inf" value="${temp.dir}/WEB-INF" /> 
<property name="temp.dir.lib" value="${temp.dir.web-inf}/lib" /> 
<property name="temp.dir.classes" value="${temp.dir.web-inf}/classes" /> 
<property name="temp.dir.meta-inf" value="${temp.dir}/META-INF" /> 


<path id="build.class.path"> 
    <fileset dir="${env.JAVA_HOME}/lib"> 
     <include name="**/*.jar" /> 
    </fileset> 
    <fileset dir="D:\ant\lib"> 
      <include name="**/*.jar" /> 
    </fileset> 
</path> 

<target name="deps"> 
    <artifact:dependencies pathId="dependency.classpath"> 
     <dependency> 
      <groupId>net.sf.json-lib</groupId> 
      <artifactId>json-lib</artifactId> 
      <version>2.3</version> 
      <type>jar</type> 
      <classifier>jdk15</classifier> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.3.2</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>xom</groupId> 
      <artifactId>xom</artifactId> 
      <version>1.1</version> 
     </dependency> 
    </artifact:dependencies> 
</target> 

<target name="clean" depends="deps"> 
    <delete> 
     <fileset dir="${dest.dir}" includes="**/*"/> 
    </delete> 
    <delete dir="${temp.dir}" /> 
    <delete dir="${temp.dir.classes}" /> 
    <delete dir="${temp.dir.meta-inf}" /> 
    <delete dir="${temp.dir.web-inf}" /> 
</target> 

<target name="prepare" depends="clean"> 
    <mkdir dir="${dest.dir}" /> 
    <mkdir dir="${temp.dir}" /> 
    <mkdir dir="${temp.dir.lib}" /> 
    <mkdir dir="${temp.dir.meta-inf}" /> 
    <mkdir dir="${temp.dir.web-inf}" /> 
    <mkdir dir="${temp.dir.classes}" /> 
</target> 

<!-- COMPILE --> 
<target name="compile" depends="prepare"> 
    <echo>=== COMPILE ===</echo> 
    <echo>Compiling ${src.dir} files ...</echo> 
    <javac debug="on" srcdir="${src.dir}" destdir="${temp.dir.classes}" includes="**/*" includeantruntime="false"> 
     <classpath refid="build.class.path" /> 
     <classpath refid="dependency.classpath" /> 
    </javac> 
</target> 

<!-- PACKAGE --> 
<target name="package" depends="compile"> 
    <echo>=== PACKAGE ===</echo> 

    <!-- copy the config files --> 
    <copy file="${resources.dir}/web.xml" tofile="${temp.dir.web-inf}/web.xml" overwrite="true" /> 
    <copy file="${resources.dir}/manifest.mf" tofile="${temp.dir.meta-inf}/manifest.mf" overwrite="true" /> 
    <copy todir="${temp.dir.classes}"> 
    <fileset dir="${src.dir}"> 
     <include name="**/*.xml"/> 
     <include name="**/*.xsl"/> 
    </fileset> 
    </copy> 

    <!-- the ant war task. with all resources in place, create the war file --> 
    <war destfile="${package.file}" webxml="${temp.dir.web-inf}/web.xml" basedir="${temp.dir}"> 
    <lib dir="${lib.dir}" /> 
    <classes dir="${temp.dir.classes}" /> 
    </war> 
</target> 

<!-- INSTALL --> 
<target name="install" depends="package"> 
    <echo>=== INSTALL ===</echo> 
    <copy file="${package.file}" tofile="${webapp.dir}/${package.name}" overwrite="true" /> 
    <copy file="${package.file}" tofile="${jboss.dir}/${package.name}" overwrite="true" />   
</target> 

</project> 

すべての依存関係を追加する前にうまくいっていましたが、まだここではpbを見つけることができません。どんな助けも大歓迎です。

答えて

12

Maven Ant Tasksを使用しているようです。これを行うには、ダウンロード領域hereからjarファイルのコピーが必要です。 これを取得したら、ビルドファイルを変更して使用する必要があります。

are neededartifact名前空間を定義し、ANT-libのためのtypedefを追加していることを主なもの:

<project name="foo" default="foo" xmlns:artifact="antlib:org.apache.maven.artifact.ant"> 

    <path id="maven-ant-tasks.classpath" path="lib/maven-ant-tasks-2.1.3.jar" /> 
    <typedef resource="org/apache/maven/artifact/ant/antlib.xml" 
     uri="antlib:org.apache.maven.artifact.ant" 
     classpathref="maven-ant-tasks.classpath" /> 
+0

ありがとうございました。私はあなたのお勧めをしましたが、まだいくつか問題があります。詳細を追加するために質問を更新しました。 – Luc

+0

@Luc - 多くの謝罪私が参照したサンプルは決して理想的ではないと私は思う。適切なサンプルへのリンクを追加し、上のサンプルXMLを更新しました。見つからないビットはtypedefです。 –

+0

namescapeを定義してくれてありがとうございました。何とかそれを逃した。 – stevebot

0

私は同じエラーメッセージがあったが、原因は異なっていました。

[ウィンドウ] - > [環境設定 - > Ant - >ランタイム]に移動し、Ant Homeで問題を解決しました。

上記の解決策がうまくいかない場合は、「Ant Home」が正しい方向を指していることを確認してください。

関連する問題