2017-03-15 6 views
0

antcompileターゲットは、<src path="..."/>タグを使用して指定されたsrcフォルダのいずれかにあるすべてのファイルをコンパイルします。私の質問は、編集の順番です。 antは最初にsrcタグで参照されるファイルをコンパイルしますか(つまり、最初にJavaファイルを${xtext.project.path}/srcにコンパイルします)、次に2番目のsrcタグなどをコンパイルしますか?コンパイルされたファイルはどのような順序ですか?私はフォルダ間の依存関係を把握しようとしています。antターゲットでのコンパイルの順序

<target name="compile"> 
     <echo message="${ant.project.name}: ${ant.file}"/> 

     <deps-load-path conf="core" pathid="core.ivy.classpath" /> 
     <deps-load-path conf="test" pathid="test.ivy.classpath" /> 

     <javac debug="true" includeantruntime="false" debuglevel="source,lines,vars" destdir="${bin.path}" source="1.8" target="1.8"> 
      <src path="${xtext.project.path}/src"/> 
      <src path="${xtext.project.path}/src-gen"/> 
      <src path="${project.path}/src"/> 
      <src path="${project.path}/src-gen-umpletl"/> 
      <src path="${project.path}/src-gen-umple"/> 
      <src path="${project.path}/test"/> 
      <src path="${vendors.path}/jopt-simple/src"/> 
      <exclude name="**/.git"/> 
      <exclude name="**/*.ump" /> 
      <exclude name="**/data" /> 
      <classpath refid="project.classpath"/> 
      <classpath refid="validator.project.classpath"/> 
      <classpath refid="core.ivy.classpath" /> 
      <classpath refid="test.ivy.classpath" /> 
      <!-- Add compiler arguments here, see https://ant.apache.org/manual/using.html#arg for details, example below 
        <compilerarg value="-Xlint:deprecation" /> 
      --> 
     </javac> 

     <copy todir="${bin.path}" overwrite="true"> 
      <fileset dir="${project.path}/src"><include name="**/*.grammar"/></fileset> 
      <fileset dir="${project.path}/src"><include name="**/*.error"/></fileset> 
     </copy> 
     <delete file="cruise.umple/src/rules.grammar"/> 
     <delete file="cruise.umple/bin/rules.grammar"/> 
     </target> 

答えて

1

あなたは<javac>-verboseオプションを指定してAntを実行して、ファイルをコンパイルする方法を見ることができます。例えば

、次のAntスクリプト...

<javac debug="true" includeantruntime="false"> 
    <src path="src1"/> 
    <src path="src2"/> 
</javac> 

...アリ、Windowsマシン上で実行されているant -verbose ...上記の例では

[javac] Compilation arguments: 
[javac] '-classpath' 
[javac] '' 
[javac] '-sourcepath' 
[javac] '.....\src1;.....\src2' 
[javac] '-g' 

で次を出力<src>要素をセミコロンで区切られた-sourcepath引数に結合しました。

は、クラスまたはインタフェースの定義を検索するソースコードパスを指定

-sourcepathのソースパス:

-sourcepathOracle's javac toolの選択肢です。ユーザークラスパスの場合と同様に、ソースパスのエントリは、Oracle Solarisではコロン(:)で、Windowsではセミコロンで区切られ、ディレクトリ、JARアーカイブ、またはZIPアーカイブになります。

Antの<javac>タスクとOracleのjavacツールの区別に注意してください。 Ant <javac>タスクは、Oracle javacツールを呼び出します。

「ファイルはどのような順序でコンパイルされていますか?」という質問に対して、答えは本質的に次のとおりです。Javaファイルはすべて同時にコンパイルされます。

+0

他の質問に答えることができるのだろうかと思います。 'project.classpath'は' $ {bin.path} 'と同じ場所にファイルのどこかで定義されます。これはコンパイルされたファイルが書き込まれる場所です。 '$ {bin.path}'はクラスパスの依存関係と '.class'ファイルが書き込まれる場所の両方になりますか?私は '$ {bin.path}'が各ビルドの前に削除されるという事実を知っていますので、 'compile'ターゲットを実行する前にフォルダ内に何もありません。 'compile'ターゲットとして生成される' .class'ファイルは 'classpath'に追加されて実行されますか? – Adam

+0

私はこれについて別の質問をしました:http://stackoverflow.com/questions/42913499/classpath-and-ant-builds – Adam

関連する問題