سؤال

لدي مشروع مخضرم مع الكثير من الوحدات الفرعية ، وأنا استخدم بوم الأم للسيطرة على الإضافات الدليل مثل أدناه

-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 ملفات من قالب. هنا هو جوهر.

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