IBM Worklight: ошибка сборки при построении проекта Worklight с задачей ANT, но он собирается в Eclipse

Мы используем IBM Worklgiht 6.0 (точные версии ниже) и видим ошибку сборки при сборке проекта Worklight с задачами ANT, но тот же код строится просто отлично в Eclipse.

Вот ошибка сборки ANT:

BUILD FAILED C: \ Users \ Administrator \ workspace-techcon3 \ MyProject \ build.xml: 44: Сбой сборки приложения: com.worklight.builder.exception.WorklightBuildRuntimeException: Менеджер ресурсов - проблема чтения файла info.plist C:\Users\Administrator\workspa ce-techcon3\MyProject\apps\MyApp\iphone\native\MyAppIphone-Info.plist (система не может найти указанный файл) Вложенное исключение: C:\Users\ Администратор \ works pace-techcon3 \ MyProject \ apps \ MyApp \ iphone \ native \ MyAppIphone-Info.plist (система не может найти указанный файл)

Вот подробности:

  1. Проект Worklight был создан с помощью плагина WorklightStudio v6.0.0.20130926-1933 в Eclipse Juno SR2.
  2. Проект Worklight называется MyProject и содержит одно гибридное приложение с именем MyApp. Он содержит среды для iPhone и Android.

  3. В Eclipse все хорошо (сборки, развертывания и т. Д.), Но происходит сбой при сборке того же кода на нашем CI-сервере через ANT (см. Ошибку выше и фрагмент build.xml ниже).

  4. Сборка ANT ищет файл с именем iphone \ native \ MyAppIphone-Info.plist, но фактический файл, который был сгенерирован подключаемым модулем Worklight в Eclipse, который находится в файловой системе, - это iphone\native\MyProjectMyAppIphone-Info.plist и, следовательно, происходит сбой.:
  5. Файл build.xml находится ниже.

Короче говоря, кажется, что артефакты проекта Worklight, созданные плагином Worklight Eclipse, несовместимы при построении того же кода с ANT - но, похоже, это должно сработать, или нет способа встроить Eclipse для dev и выполнить сборку без головы через ANT в среде CI.

build.xml is below:

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="MyTask" basedir="." default="build">
    <property file="build.properties"/>

    <target name="init">
        <delete dir="${build.dir}"/>
        <mkdir dir="${build.dir}"/>
        <mkdir dir="${build.dir}/classes"/>
        <echo message="Loading ANT Tool"/>
        <echo message="Basedir is ${basedir}"/>
        <echo message="Antlib is ${ant.library.dir}"/>

<taskdef resource="com/worklight/ant/defaults.properties">
            <classpath>
            <pathelement location="${ant.library.dir}/worklight-   ant.jar"/>
            </classpath>
        </taskdef>
    </target>


    <target name="build" depends="init, warBuilder,appBuilder">
        <echo message="Build Target Complete"/>
    </target>

    <target name="warBuilder">
        <echo message="Building the war file"/>
<war-builder projectfolder="${basedir}" destinationfolder="${build.dir}"
<warfile="${build.dir}/${war.file.name}" classesFolder="${build.classes.dir}"/>

<echo message="Updating the war file with worklight server configurations"/>
        <war destfile="${build.dir}/${war.file.name}" update="true">
            <webinf dir="${build.files.dir}" includes="i*.xml"/>
        </war>
    </target>

<target name='appBuilder' >
        <echo message="Building the App"/>
<app-builder applicationFolder="${apps.dir}" outputfolder="${build.dir}"
worklightServerHost="${WLSERVERHOST}"/>
            </target>


<target name='buildAllAdapters'>
        <taskdef resource="net/sf/antcontrib/antlib.xml">
            <classpath>
            <pathelement location="${ant.library.dir}/ant-contrib-0.6.jar"/>
            </classpath>
        </taskdef>

        <echo message="Building all adpaters"/>
    <foreach target="adapterBuilder" param="adapterDirectory" inheritall="true">
            <path>
                <dirset dir="${adapters.dir}">
                    <include name="*"/>
                </dirset>
            </path>
        </foreach>
    </target>
    <target name="adapterBuilder">
        <echo message="Building adapters in folder ${adapterDirectory}"/>
    <adapter-builder folder="${adapterDirectory}" destinationfolder="${build.dir}"/>
    </target>

    <target name="appDeployer">
        <echo message="Deploying app ${appFile}"/>
    <app-deployer worklightServerHost="${WLSERVERHOST}" deployable="${appFile}"/>
    </target>
    <target name='deployAllAdapters'>
        <taskdef resource="net/sf/antcontrib/antlib.xml">
            <classpath>
        <pathelement location="${ant.library.dir}/ant-contrib-0.6.jar"/>
            </classpath>
        </taskdef>

        <echo message="Deploying all adpaters"/>
        <foreach target="adapterDeployer" param="adapterFile" inheritall="true">
            <path>
                <fileset dir="${build.dir}">
                    <include name="*.adapter"/>
                </fileset>
            </path>
        </foreach>
    </target>

</project>

1 ответ

В вашем build.xml вам не хватает свойства nativeProjectPrefix в теге app-builder. Вот пример приложения-строителя с различными свойствами.

<app-builder
    worklightServerHost="http://server-address:port"
    applicationFolder="adapter-source-files-folder"
    environments="list-of-environments"
    nativeProjectPrefix="project-name"
    outputFolder="output-folder"/>
Другие вопросы по тегам