• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:antについての質問です)

antについての質問です

このQ&Aのポイント
  • いつもお世話になっております。早速antについて質問させていただきます。
  • inputタスクでユーザー入力した値のプロパティを呼び出したいのですがなかなかうまくいきません。
  • プロパティの数が物凄く多くなるとターゲットの量が膨大になるのでもっとシンプルに作ろうと思っています。そこで <echo message="${${ユーザー入力値}}" />と一行にまとめた所、エラーとなってしまいます。何か良い解決策はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • world99
  • ベストアンサー率64% (20/31)
回答No.3

少々、手強かったので、返事が遅くなってしまいました。すいません。 Big-satoshさんが、お探しになっていた変数の再評価ですが、ant単体ではできない事が判明しました。 【参考サイト】http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/faq.html#propertyvalue-as-name-for-property しかし、このサイトに記載されているように、Ant-Contribという拡張タスクライブラリを利用すれば実現できるとのことなので、試してみました。 【Ant-Contrib】http://ant-contrib.sourceforge.net/ 苦戦をしつつもなんとか、実現できましたので、以下に手順を記します。 1)antでjavascriptを利用できるようにする。 1-1)Bean Scripting Framework (BSF) サイトより、次の3つのJARファイルをダウンロードして、antのホームディレクトリ配下のlibフォルダに配置する。 【BSFとは】http://muimi.com/j/jakarta/bsf/ 【js.jar】https://developer.mozilla.org/en/Rhino_downloads_archive 【bsf.jar】http://jakarta.apache.org/site/downloads/downloads_bsf.cgi 【commons-logging】http://commons.apache.org/downloads/download_logging.cgi 2)Ant-Contribを利用できるようにする。 Ant-ContribのJARファイルを、antのホームディレクトリ配下のlibフォルダに配置する。 3)いざ検証! <project name="test" default="init" basedir="."> <property name="1" value="http://aaa.co.jp" /> <property name="2" value="http://bbb.co.jp" /> <taskdef resource="net/sf/antcontrib/antcontrib.properties" /> <script language="javascript"> propname = project.getProperty("param"); project.setNewProperty("url", propname); </script> <target name="init" depends="input"> <property name="param" value="${pas}" /> <propertycopy name="url" from="${param}" /> <echo message="URL:${url}" /> </target> <target name="input"> <input message="取得したいアドレスの番号を入力してください" addproperty="pas" /> <echo message="user_input:" /> </target> </project>

Big-satosh
質問者

お礼

返事が遅くなって済みません。 この回答に文句ありません、完璧です!! わざわざ回答者様の貴重な時間を割いてまで回答を調べていただいて申し訳ないです。 本当に有難う御座いました。

その他の回答 (2)

  • world99
  • ベストアンサー率64% (20/31)
回答No.2

一旦、antコマンドの引数をプロパティに設定して利用するという事もできます。(この方法をお探しだったかもと思い再び回答しました。) <?xml version="1.0" encoding="UTF-8"?> <project name="qa4645490" default="init" basedir="."> <property name="param" value="${sample}" /> <target name="init"> <echo message="${param}" /> </target> </project>

Big-satosh
質問者

お礼

返事ありがとうございます、そして遅くなって済みません。 ご指摘通りソースを組みなおしてもうまくいきませんでした。 もしかしたら説明が足りなかったみたいなので再度説明させてもらいます。  入力した値と同じプロパティ名のプロパティの値を持ってきたいのに入力値が出力されてしまいます。 実際のソースです↓ ********************************************  ソース ******************************************** <?xml version="1.0" encoding="UTF-8"?> <project name="test" default="init" basedir="."> <property name="1" value="http://aaa.co.jp"/> <property name="2" value="http://bbb.co.jp"/> <target name="init" depends="input"> <property name="param" value="${pas}"/> <echo message="URL:${param}"/> </target> <target name="input"> <input message="取得したいアドレスの番号を入力してください" addproperty="pas" /> <echo message="user_input:"/> </target> </project> *****************************************  コマンド ***************************************** C:\ant -quiet [input]取得したいアドレスの番号を入力してください 1 [echo]user_input:1 [echo]URL:1 ※本当は最後のechoではinput入力した“1”と同じプロパティ名をもつ“1”プロパティの値“http://aaa.co.jp”を表示させたい

  • world99
  • ベストアンサー率64% (20/31)
回答No.1

次の方法で、antコマンドの引数に設定した値を参照する事ができます。 ------------------------------  build.xml ------------------------------ <?xml version="1.0" encoding="UTF-8"?> <project name="qa4645490" default="init" basedir="."> <target name="init"> <echo message="${sample}" /> </target> </project> ------------------------------  ant実行コマンド ------------------------------ >ant -Dsample=ハロー Buildfile: build.xml init: [echo] ハロー

関連するQ&A