سؤال

المكون الإضافي المؤكد (اختبار) مافنmvn test-compile نسخ الملفات في src/test/resources ل target/test-classes. يجمع .java في src/test/java, ونسخ التجميع .class الملفات إلى target/test-classes.

لكنه لا ينسخ الموارد من src/test/java, ، وأكثر ملاءمة أن تكون قادرًا على وضع موارد الاختبار في نفس الدليل مثل .java الفصول الدراسية التي هي موارد لها ، من في التسلسل الهرمي الموازي في src/test/resources.

هل من الممكن الحصول على Maven لنسخ الموارد من src/test/java?

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

المحلول

يتم نسخ المورد كله بواسطة Maven-Resource-Plugin ، وإذا قرأت المستند منه ، فسترى كيفية إضافة نسخ للموارد من SRC/Test/Java.

يرى http://maven.apache.org/plugins/maven-resources-plugin/testresources-mojo.html لهدف اختبار الموارد ، والذي يتم تضمينه في دورة الحياة الافتراضية.

ثم انظر http://maven.apache.org/pom.html, وابحث عن <testResources>.

نصائح أخرى

أعطى bmargulies الجواب, ، ولكن اسمحوا لي أن ملء بعض التفاصيل.

<testresources> يمكن إضافتها إلى <build> عقدة POM للمشروع ، مثل هذا:

 <testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
  </testResource>
 </testResources>

أن ينسخ كل شيء في src/test/java - بما في ذلك .java رمز المصدر ، الذي لا نريده.

كما أنه (كما ألمح bmargulies فقط) <testResources> الإعداد في POM الأصل القياسية التي يرثها جميع POM الأخرى (ما لم يتم تغيير هذا الميراث). نسخ الوالد القياسية src/test/resources, ، لذلك من خلال تجاوز ذلك ، لا نحصل على نسخ كالمعتاد ، وهو ما لا نريده. (على وجه الخصوص ، السبب الكامل للقيام بذلك هو استخدام الوحدة ، التي تريد unitils.properties تم نسخ ملف - وهذا (بالنسبة لي ، على أي حال) في src/test/resources.

لذلك نحن نعيد إضافة src/test/resources:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

أن النسخ بالترتيب المدرج ، بحيث بالنسبة للملفات الموجودة في كليهما /src/test/java (والمدافع الفرعي) وفي /src/test/resources (والمدافع الفرعي) ، src/test/resources الإصدار هو الذي ينتهي به المطاف test-classes.

الآن نحن فقط بحاجة إلى ليس انسخ ال .java الملفات:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
    <excludes>
        <exclude>**/*.java</exclude>
    </excludes>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

الطريقة الوحيدة التي نجحت بها عندما أضع تكوين الاختبار الخاص بي src/test/resources مجلد (التناظرية من src/test/java لملفات المصدر). يتم نسخ الملفات من هذا المجلد إلى target/test-classes المجلد الموجود على classpath أثناء تنفيذ الاختبارات. لا أعرف لماذا ، لكن التكوين التالي لم ينجح بالنسبة لي:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
    <excludes>
        <exclude>**/*.java</exclude>
    </excludes>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

هل من الممكن الحصول على Maven لنسخ الموارد من SRC/Test/Java؟

نعم ، يتم تحقيق هذا بسهولة مع antrun البرنامج المساعد.

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