0

この回答で提案されている方法を使用して、Clojure ディストリビューションのルート (たとえば ) にあるファイルのターゲットの構造を多かれ少なかれ使用して、 Clojure*.cljファイルをコンパイル(およびその後 jar ファイル) します。私の場合:*.classcompile-clojurebuild.xmlclojure-1.5.1.zip

<java classname="clojure.lang.Compile" 
      failonerror="true"
      fork="true">
  <classpath refid="compile.classpath"/>
  <sysproperty key="clojure.compile.path" value="${cljbuild.dir}"/>
  <arg value="${project.MainClass.name}"/>
</java>

このアプローチの問題は、*.cljファイルが変更されていないにもかかわらず、ファイルをコンパイルし続けることです。これを回避する方法はありますか?

4

2 に答える 2

0

最終的にant-contribのOutOfDateタスクを使用しました(たとえば、Antのタスクを呼び出すより一般的なケースについては、この回答execでも説明されています)。

<contrib:outofdate>
    <deletetargets all="true"/>
    <sourcefiles>
        <path refid="compile.dependency.artifacts"/>
    </sourcefiles>
    <targetfiles>
        <fileset dir="${cljbuild.dir}">
            <include name="**/*.class"/>
        </fileset>
    </targetfiles> 
    <sequential>
        <java classname="clojure.lang.Compile" 
              failonerror="true"
              fork="true">
          <classpath refid="compile.classpath"/>
          <sysproperty key="clojure.compile.path" value="${cljbuild.dir}"/>
          <arg value="${project.MainClass.name}"/>
        </java>
    </sequential>
</contrib:outofdate>
于 2013-10-15T14:52:22.493 に答える
0

さまざまな理由で Leiningen を使用できなかった Clojure プロジェクトを構築する場合、Zi プラグインを使用して、何を再コンパイルする必要があるかを Maven に決定させることで、より満足しています。

于 2013-10-14T23:41:02.283 に答える