جافا:كيفية التواصل بين معالج التعليقات التوضيحية ومشروع آخر؟

StackOverflow https://stackoverflow.com/questions/1627669

سؤال

لدي الخاصة معالج التعليقات التوضيحية (دعنا نسميها MyProcessor) ومشروع (دعنا نسميها MyProject) الذي يستخدم المعالج عن طريق المرور -processor ل javac.

الآن أحتاج إلى MyProcessor لإنتاج بعض المخرجات وإتاحتها لـ MyProject.

لدي الخيارات التالية (والمشاكل):

  • اسمح لـ MyProcessor بكتابة ملف إلى المسار المحدد بواسطة الخاصية user.dir.
    مشكلة: من وجهة نظر MyProcessor، user.dir هو دائمًا مسار منزلي، وليس مسار MyProject.

  • قم بتمرير الدليل الحالي لـ MyProject إلى MyProcessor باستخدام javac-A خيار.
    مشكلة: إنه مسار قبيح مشفر: /some/path/to/MyProject/.

  • اسمح لـ MyProcessor بإنشاء بعض الملفات المصدر، والتي سيتم تجميعها بعد ذلك بواسطة javac مع MyProject، بحيث يمكن لـ MyProject الرجوع إلى هذه الفئة المترجمة واسترداد البيانات منها.
    مشكلة: إنها معقدة للغاية بالنسبة لمثل هذه المهمة السهلة (؟).

  • ما هي الخيارات الأخرى هناك؟

هل يمكن لأي شخص أن يقترح كيفية المتابعة؟

هل كانت مفيدة؟

المحلول

Processor.init() يتم استدعاء الطريقة (التي قمت بتنفيذها) باستخدام بيئة المعالجة كمعلمة والتي بدورها لديها getFiler() طريقة إرجاع أ المدون مثال.

يجب أن تستخدم createResource() طريقة Filer (بافتراض أن المخرجات التي يتم إنشاؤها ليست فئة ولا مصدر؛وإلا استخدم المناسب create طريقة لذلك) واكتب مخرجاتك لأي منهما فصل أو مصدر المواقع (ربما يكون الخيار الأول هو الأفضل، لكن ذلك يعتمد على ما تفعله).يمكن تجاوز كلاهما عبر مفاتيح تبديل سطر الأوامر إذا لزم الأمر، ولكنهما محددان جيدًا حيث سيتم استخدامهما في عملية الإنشاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top