<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>net.wetheinter</groupId>
  <artifactId>xapi</artifactId>
  <version>0.5</version>
 </parent>

 <artifactId>xapi-core-parent</artifactId>
 <packaging>pom</packaging>
 <name>XApi - Core SuperPom</name>
 <url>WeTheInter.net/source/core</url>
 <description>
  This is the main aggregator for all implementation code shared between modules.
  
  Each module contains one or more service interfaces, 
  exposed statically using "X_" prefixed classes.  
  Core modules will define their API interfaces, their static accessor,
  and often a "plain-jre" default implementation which can be replaced by injection override.

  There must be zero external dependencies in any core modules.
  A low-performance, low-feature default is preferred over thick, dependency-ridden shared inherits.
 </description>

 <modules>
  <!-- The api module is the root dependency of all xapi modules, artifactId: 
   xapi-core. It consists mostly of interfaces, annotations, and a few implementation 
   classes; the annotations used for injection are stored here, for modules 
   which wish to define a default injection target, but do not want or need 
   to perform injection themselves. xapi-core exports the following injectable 
   services: X_String, X_Property and the following static service classes, 
   which may become injectable as required: X_Byte, X_Debug -->
  <module>api</module>

  <!-- Basic logging interfaces, and a few adapter types to aid in integrating other APIs. -->
  <module>log</module>

  <!-- The reflect module is where we keep our code-mirroring interfaces. 
   It's only dependency is xapi-api, and it includes a read-only abstraction api
   of java language semantics, to abstract away the source of said structure
   (bytecode, programmatic, ast, etc). -->

  <module>reflect</module>

  <!-- The inject module contains the skeleton infrastructure of our dependency 
   injection mechanism. It is functional in any jre environment, though the 
   bare module can only perform injection if manfiests are saved to META-INF/instances 
   and META-INF/singletons. For runtime classpath scanning, and manifest generation, 
   see xapi-jre-inject The gwt module, xapi-gwt-inject, implements dependency 
   injection with heavy use of codegen. -->
  <module>inject</module>

  <!-- A collection of core static services and default implementations. -->
  <module>util</module>

  <!-- Core model api -->
  <module>model</module>

  <!-- Core io api -->
  <module>io</module>

  <!-- Core collection abstractions. Beta -->
  <module>collect</module>

  <!-- Core concurrency abstractions. Alpha -->
  <module>process</module>

  <!-- A simple argument processor, based on GWT ArgProcessor classes. -->
  <module>args</module>

  <!-- Core user interface apis. -->
  <module>ui</module>

  <!-- Test module -->
  <module>test</module>

 </modules>

 <build>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <executions>
     <execution>
      <id>attach-sources</id>
      <phase>package</phase>
      <goals>
       <goal>jar</goal>
      </goals>
      <inherited>true</inherited>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>

</project>
