Location of xsd for ant ivy lib “antlib:org.apache.ivy.ant” for IDE autocomplete with xsd?

后端 未结 6 1589
一向
一向 2021-02-20 18:17

I want create Ivy Ant tasks in xml editor in IDE (Intellij iDEA) with autocomplete based on xsd , but I cannot find xsd for register XML namespace xmlns:ivy=\"antlib:org.apache.

相关标签:
6条回答
  • 2021-02-20 18:51

    yes, no xsd for ivy ant tasks avialable. but i found the way to make autocomplete in Intellij IDEA in ant build file need to define additional task:

    <property name="ivy.jar.dir" value="C:/Apache/apache-ivy-2.2.0/"/>
    
    
    <taskdef resource="org/apache/ivy/ant/antlib.xml"
                     uri="antlib:org.apache.ivy.ant">
            <classpath>
                    <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
            </classpath>
    </taskdef>
    
    0 讨论(0)
  • 2021-02-20 18:52

    I guess this discussion might help you. It appears that there is no xsd for the ivy ant tasks, but Eclipse does autocomplete.

    0 讨论(0)
  • 2021-02-20 19:00

    might be, there was no xsd in the past time this discussion started, but at least since may 2011 the ivy scheme is well documented at

    http://ant.apache.org/ivy/schemas/ivy.xsd

    which is linked right from the documentation in http://ant.apache.org/ivy/

    so, to start over using the scheme, you just need:

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="yourproject"
             xmlns:ivy="antlib:org.apache.ivy.ant"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
    >
    <!-- … -->
    
    0 讨论(0)
  • 2021-02-20 19:03

    XML plugin for jEdit defines AntCompleteTask (ant task) that produces an xml file called ant-complete.xml. The resulting file looks as follows:

    <element-list>
    <!-- ... -->
    <element name="classpath"
    content="(fileset|dirset|extdirs|existing|filelist|pathelement|path)">
    <attribute name="id" type="ID" />
    <attribute name="location" type="CDATA" />
    <attribute name="cache" type="(true|false|on|off|yes|no)" />
    <attribute name="refid" type="CDATA" />
    <attribute name="description" type="CDATA" />
    <attribute name="path" type="CDATA" />
    </element>
    <!-- ... -->
    

    The generated file may be downloaded as XML plugin archive. Open XML.jar and browse to xml/completion directory. It's syntax is defined in xml-completion-info.dtd.

    The task code does not contain an explicit license, but it's at least GPL. Anyway you probably don't need to distribute that task, only to use it and this doesn't require any license.

    I can't assess the usability of the resulting xml file, but jEdit uses it for autocompletion.

    0 讨论(0)
  • 2021-02-20 19:08

    I just copied the ivy jar to INTELLIJ_HOME/lib/ant and now intellij can resolve the ivy tasks.

    Or import this ant file to your ant project, its actually the first ivy example in ivy documentation, make sure to always depend on install-ivy target, add your ant file to idea in the ant build window and you dont even have to install ivy and idea recognizes ivy tasks.

    <property name="ivy.jar.dir" value="${user.home}/.ivy2/jars" />
    <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />
    
    <property name="ivy.install.version" value="2.2.0" />
    
    
    <target name="check-ivy-installed" unless="INTERN-ivy.jar.exists">
        <available property="INTERN-ivy.jar.exists" file="${ivy.jar.file}"/>
    </target>
    
    
    <target name="download-ivy" depends="check-ivy-installed" unless="INTERN-ivy.jar.exists">
        <echo message="downloading and installing ivy"/>
        <mkdir dir="${ivy.jar.dir}"/>
        <!-- download Ivy from web site so that it can be used even without any special installation -->
    
        <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
             dest="${ivy.jar.file}" usetimestamp="true"/>
        <echo message="ivy installed"/>
    </target>
    
    <!-- ================================= 
          target: install-ivy         
            this target is not necessary if you put ivy.jar in your ant lib directory
            if you already have ivy in your ant lib, you can simply remove this
            target and the dependency the 'go' target has on it
         ================================= -->
    <target name="install-ivy" depends="download-ivy" description="--> install ivy">
        <!-- try to load ivy here from local ivy dir, in case the user has not already dropped
              it into ant's lib dir (note that the latter copy will always take precedence).
              We will not fail as long as local lib dir exists (it may be empty) and
              ivy is in at least one of ant's lib dir or the local lib dir. -->
        <echo message="Installing ivy"/>
        <path id="ivy.lib.path">
            <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
        </path>
        <taskdef resource="org/apache/ivy/ant/antlib.xml"
                  uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
    </target>    
    

    0 讨论(0)
  • 2021-02-20 19:09

    To complete Shalom's answer, the location where to add the ivy.jar for the IntelliJ IDEA Community Edition is INTELLIJ_HOME/lib/ant/lib (one more folder to go).

    Maybe it also apply to the full version.

    0 讨论(0)
提交回复
热议问题