هل مشروع موارد مافن قابل لإعادة الاستخدام ممكن؟
سؤال
هل هناك أي قدرة على بناء قطعة أثرية Maven التي ستحتوي على موارد فقط ولكن لا توجد مصادر والتي يمكن إعادة استخدامها بواسطة مشاريع أخرى؟
الدافع هو ما يلي. لدي مكتبة تحتوي فقط على رمز HTML/CSS/JavaScript. يجب أن تكون هذه المكتبة مكتظة كموارد في مشروع الحرب. بالنسبة الآن ، أقوم ببناء أرشيف الويب مع الموارد من قبل POM. لكن هل يمكنني فصل كود HTML/CSS/JavaScript في قطعة أثرية جديدة وإعادة استخدامها في العديد من مشاريع الحرب؟
المحلول
استخدم Maven تراكب. يرى التلاعب بالتراكبات الحرب لمزيد من الأمثلة.
نصائح أخرى
يمكنك القيام بذلك مع مافن تجميع البرنامج المساعد.
لا أتخيل أن Maven سيمنعك من التغلب على بعض الموارد معًا ، وإضافة ذلك كاعتماد في مشروع الويب الخاص بك.
ومع ذلك ، فإن الطريقة التي تحتاجها للرجوع إلى الموارد ستكون غريبة بعض الشيء. أنا لست معتادًا على تحميل أوراق أنماط CSS كموارد Java داخل ملف JAR داخل الويب/LIB.
أرغب في الرجوع إليهم كموارد ويب عادية ، نسبة إلى جذر ملف الحرب ، وليس عبر جهاز التشغيل ClassLoader.
هذا شيء بسيط للغاية للاختبار:
$ ls -R
.:
pom.xml src
./src:
main
./src/main:
resources
./src/main/resources:
README.txt content-is-here.txt
$ mvn package
... Maven doing it's thing...
$ unzip -l target/test-1.0-SNAPSHOT.jar
Archive: target/test-1.0-SNAPSHOT.jar
Length Date Time Name
--------- ---------- ----- ----
0 02-25-2010 16:18 META-INF/
123 02-25-2010 16:18 META-INF/MANIFEST.MF
10 02-25-2010 16:18 content-is-here.txt
0 02-25-2010 16:18 README.txt
0 02-25-2010 16:18 META-INF/maven/
0 02-25-2010 16:18 META-INF/maven/group/
0 02-25-2010 16:18 META-INF/maven/group/test/
626 02-25-2010 16:15 META-INF/maven/group/test/pom.xml
106 02-25-2010 16:18 META-INF/maven/group/test/pom.properties
--------- -------
865 9 files
يمكن القيام بذلك عن طريق Jarring Resource Artifact وتفريغه في SRC/Main/Resources في مشروع الحرب أثناء validate
مرحلة على سبيل المثال. POM الموارد تافهة ولكن الحرب سوف تحتوي على ما يلي:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>validate</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>my.company</groupId>
<artifactId>resource-artifact</artifactId>
<version>1.0</version>
<overWrite>true</overWrite>
<outputDirectory>src/main/resources</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>