У меня проблемы с созданием сценария сборки Ant для наших производственных приложений.
Я много читал об Ant и bb-ant-tools .Я проследил за многими вопросами по работе со стеками на Ant & BB (ссылки ниже в комментариях, чтобы «связать» вопросы).Я хотел бы помочь с более сложным сценарием, чем обычный "Hello World!"стиль приложений.Мой текущий процесс сборки полностью выполняется в Eclipse и выполняется вручную.
Для этого вопроса я хотел бы спросить , как использовать Ant для создания проекта, использующего 2 (или более) различных библиотечных проекта.(что тоже нужно собрать), вообще не используя Eclipse?
У меня установлен Ant, bb-ant-tools.Я собрал и развернул на устройстве базовый Hello World, используя эти инструменты на следующих примерах.Я создал скрипт сборки и несколько файлов свойств;но когда я запускаю сценарии, конечный продукт не запускается на телефоне (пользовательский интерфейс телефона зависает на экране запуска).
У меня есть 3 сценария сборки, один для каждой библиотеки и один дляосновное приложение.Они идентичны, за исключением имени проекта (и могут быть объединены в один общий импортированный скрипт в некоторый момент).Каждый из 3-х java-проектов имеет связанный с ним файл свойств Ant.Я также использую 3 файла общих свойств для определения констант, хранения информации о JDE и пароля для подписи кода.
common.properties:
jde.home=C:/development/tools/bb-jde/jde4.5/components
sigtool.jde = ${jde.home}
sigtool.password = xxx_pass_xxx
project.properties (для библиотеки SOAP):
output=MySOAP
type=midlet
project.properties (для внутренней библиотеки SDK):
output=MySDK
type=midlet
Обновление 1: Я обновил файлы свойств библиотеки с момента публикации.Ранее я установил type=library
(на основе документации RIM).Основываясь на моих исследованиях, изложенных в этом посте ( BlackBerry - используйте собственный JAR-файл в собственном проекте ), я попытался изменить на type=midlet
.Это дает лучшие результаты (по крайней мере, на моей платформе BB JDE 5.0).
project.properties (для моего приложения):
output=MyApp
title=App
type=cldc
vendor=Richard
version=1.0.7
description=A nice app
icon=icon.png
build.xml (все то же самое, за исключением имени вверху, и у 2 библиотечных сценариев нет наборов файлов, объявленных внутри import.jars):
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="MyApp" default="build">
<!-- BLACKBERRY ANT TOOLS -->
<property name="bb-ant-tools.home" location="C:/development/tools/bb-ant-tools" />
<taskdef resource="bb-ant-defs.xml" classpath="${bb-ant-tools.home}/bb-ant-tools.jar" />
<!-- CONFIG FILES -->
<property file="${common.basedir}/common.properties" />
<property prefix="project" file="project.properties" />
<!-- FOLDERS -->
<property name="dest.dir" location="build" />
<!-- this is empty in the library scripts -->
<path id="import.jars">
<fileset dir="../MySDK/build" includes="*.jar" />
<fileset dir="../MySOAP/build" includes="*.jar" />
</path>
<path id="src.files">
<fileset dir="src" includes="**/*" />
<fileset dir="res" includes="**/*" />
</path>
<!-- TARGET ACTIONS -->
<target name="build" depends="">
<mkdir dir="${dest.dir}" />
<!-- work around a bug requiring app icons to be in the output folder -->
<copy file="${basedir}/res/icon.png" tofile="${dest.dir}/icon.png" />
<rapc
jdehome="${jde.home}"
output="${project.output}"
destdir="${dest.dir}" >
<import refid="import.jars" />
<src refid="src.files" />
<jdp file="${basedir}/project.properties" />
</rapc>
</target>
<target name="sign" depends="build">
<sigtool
codfile="${dest.dir}/${project.output}.cod"
jdehome="${sigtool.jde}"
password="${sigtool.password}" />
</target>
<target name="clean">
<delete dir="${dest.dir}" />
</target>
</project>
Обновление 2: Я обновил build.xml
с момента первого поста.Target build
теперь копирует значок приложения в папку вывода сборки (${dest.dir}
), чтобы обойти ошибку в bb-ant-tools / rapc.
Так что это очень простой скрипт Ant, кроме:
- Я хотел бы знать, как вызвать вспомогательные сборки из основной сборки приложения (мой ответ ниже имеет дело с этим).
- Самое главное, что полученный в результате вывод не работает.
FWIW Я нашел следующие популярные ресурсы и перечислил их так, чтобы они не требовались.быть добавлены в качестве ответов и помочь любому в будущем, ищущему информацию: