موقع مخضرم لوحدة متعددة
-
12-11-2019 - |
سؤال
لدي مشروع مخضرم مع الكثير من الوحدات الفرعية ، وأنا استخدم بوم الأم للسيطرة على الإضافات الدليل مثل أدناه
-pom.xml (parent pom)
+- submodule1
+- submodule2
+- src\site\site.xml
لذلك src\site\site.xml
يحتوي على قائمة مخصصة مثل أدناه
<project>
....
<body>
<menu name="Overview">
<item name="Introduction" href="introduction.html"/>
</menu>
<menu name="Development">
<item name="Getting started" href="designenv.html"/>
<item name="FAQ" href="designfaq.html" />
<item name="Javadoc" href="apidocs/index.html" />
</menu>
<menu ref="modules"/>
<menu ref="reports"/>
</body>
</project>
بعد أن أركض mvn site:stage
في الجذر (اقترح من مخضرم الموقع المساعد) ، صفحة الويب الرئيسية على ما يرام ، في حين أن <sub-modules>\index.html
لا يحتوي على أي قائمة (لا معلومات المشروع وتقرير المشروع)
كما ألاحظ إذا ركضت mvn site
تحت الوحدات الفرعية ، الفهرس.هتمل لا يحتوي على أي قائمة في اليسار ، في حين أن هتمل الفردية موجودة في الدليل مثل بمد.أتش تي أم أل ، رخصة.أتش تي أم أل
- هل أحتاج إلى إضافة
src\site\site.xml
في كل وحدة فرعية أو طريقة أخرى أفضل ? - أو لم أفعل شيئا غبيا في
pom.xml
في مكان ما ?
أي تلميحات ?
[تحديث] أيضا مثل صورة لافتة ، إذا قمت بتعيين في الأصل مثل هذا
<bannerLeft>
<name>edcp</name>
<src>images/mylogo.png</src>
</bannerLeft>
موقع وحدة فرعية مع نقاط إلى الاتجاه الخاطئ ، في هتمل ، يبدو مثل ..\..\<submodule>
, ، ليس ..\images\mylogo.png
المحلول
إذا كنت ترغب في تجنب نسخ الموقع.شمل لكل وحدة فرعية يدويا ، ثم باستخدام مخضرم-الموارد-البرنامج المساعد يمكن أن يكون حلا:أضف هذا إلى والدك بوم:
[...]
<properties>
<site.basedir>${project.basedir}</site.basedir>
</properties>
[...]
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-sitedescriptor</id>
<!-- fetch site.xml before creating site documentation -->
<phase>pre-site</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/site/</outputDirectory>
<resources>
<resource>
<directory>${site.basedir}/src/site/</directory>
<includes>
<include>**/site.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
وهذا لكل من بومس الوحدة الفرعية الخاصة بك:
<properties>
<site.basedir>${project.parent.basedir}</site.basedir>
</properties>
ثم سيتم نسخ واصف الموقع من المشروع الأصل إلى كل وحدة فرعية (الكتابة فوق الواصفات الموجودة) قبل إنشاء وثائق الموقع.يرجى ملاحظة أن دليل سرك/الموقع يجب أن يكون موجودا في كل وحدة فرعية لجعل هذا العمل.ليس حلا مثاليا ، ولكن ربما أفضل من الحل اليدوي الكامل.
نصائح أخرى
من الممكن أن ترث القوائم من الوالد site.xml
باستخدام inherit
السمة.
على سبيل المثال,
<project>
....
<body>
<menu name="Overview" inherit="top">
<item name="Introduction" href="introduction.html"/>
</menu>
<menu name="Development" inherit="top">
<item name="Getting started" href="designenv.html"/>
<item name="FAQ" href="designfaq.html" />
<item name="Javadoc" href="apidocs/index.html" />
</menu>
<menu ref="modules"/>
<menu ref="reports"/>
</body>
</project>
الآن كل من Overview
و Development
سيتم توريث القوائم من قبل جميع المشاريع الفرعية.
راجع وثائق مخضرم لمواقع متعددة وحدة لمزيد من التفاصيل, http://maven.apache.org/plugins/maven-site-plugin/examples/multimodule.html#Inheritance
أنا تعثرت عبر هذا عند محاولة إنشاء موقع مخضرم وحدة متعددة وأردت فقط لتبادل حل خطرت لي.
في والدك بوم إضافة
<siteDirectory>${session.executionRootDirectory}/src/site</siteDirectory>
إلى تكوين البرنامج المساعد موقع مخضرم.
يجب أن تخبر جميع الأطفال بومس للحصول على موقعهم.شمل من الدليل الأصل.
أنا باستخدام برنامج نصي الثعبان الصغيرة التي تخلق كل site.xml
ملفات من قالب. هنا هو جوهر.