2

次の質問があります: Play アプリケーションを PlayApp と呼ぶことができます。この Play アプリケーション内でサブプロジェクトを作成しました (playApp 内の dir /MyLib 内)。それを MyLib と呼びましょう。この MyLib プロジェクトには、クラス アノテーションを含むいくつかのマクロがあります。その注釈を PlayApp 内で使用したいと考えています。そこで、この MyLib を作成し、PlayApp を MyLib に依存させました。すべて正常に動作します。これは私の PlayApp/build.sbt です

...
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0-M5" cross CrossVersion.full)

lazy val root = (project in file(".")).enablePlugins(PlayScala).aggregate(MyLib).dependsOn(MyLib)

lazy val MyLib = project
...

PlayApp は MyLib に依存する必要があり、別のコンパイル実行でコンパイルする必要があることはわかっています。しかし、このMyLibプロジェクトからjarを作りたいです。だから私はそれをやった

sbt assembly 

/MyLib に配置し、プロジェクトの /lib 内に jar を配置しました。MyLib.jar からコンパイルされたクラスを確認できますが、コンパイル エラーが発生します。

コンパイルエラー

マクロ アノテーションを展開できませんでした (その最も一般的な理由は、マクロ パラダイス プラグインを有効にする必要があるためです。別の可能性としては、マクロ アノテーションを定義する同じコンパイル実行でマクロ アノテーションを使用しようとしている可能性があります)。

これは私にとっておなじみのエラーです。これは、play が PlayApp と同じコンパイル実行でマクロをコンパイルしようとしているようです。誰かが解決策を知っていますか?

編集:

私はこれを見つけました。使用したいプロジェクト クラスにマクロ アノテーションを二重にインポートしました...通常、ライブラリを jar にパックし、Play アプリの /lib 内に配置し、build.sbt にこのコンパイラ プラグインを追加するだけです。私のエラーはその手順とは関係ありませんでした。このコンパイル エラーが発生する別の可能性があるインポートを再確認してください。

4

0 に答える 0