diff --git a/tech/development.wiki b/tech/development.wiki
index b4ae4f1..9e5c1e5 100644
--- a/tech/development.wiki
+++ b/tech/development.wiki
@@ -22,6 +22,7 @@
* [[git]] - Version controll
* [[qemu]] - Virtual machine
* [[Docker]] - Psudeo VMs
+* [[maven]] - Apache dependency tool
== Human aspect ==
diff --git a/tech/make.wiki b/tech/make.wiki
new file mode 100644
index 0000000..e646b1c
--- /dev/null
+++ b/tech/make.wiki
@@ -0,0 +1,3 @@
+= Make =
+
+Make is the unix standard build tool, utilizing a Makefile
diff --git a/tech/maven.wiki b/tech/maven.wiki
new file mode 100644
index 0000000..318c185
--- /dev/null
+++ b/tech/maven.wiki
@@ -0,0 +1,258 @@
+= Maven =
+
+Maven uses a Project object model to manage a software project. It manages
+
+* reporting
+* documentation
+* building
+
+Maven can
+
+* build multiple projects together
+* can manage:
+ * builds
+ * documentation
+ * reporting
+ * dependencies
+ * SCMs
+ * Releases
+ * distribution
+ * mailing lists
+
+*All maven project structure is in an xml file called pom.xml*
+
+For a quickstart, go to [[#Creating a project]]
+
+Maven uses sensible defaults, requiring minimal configuration on the part of
+the developer. Some defaults are below
+
+| Item | Default |
+| source | /src/main/java |
+| resources | /src/main/resources |
+| tests | /src/test |
+| compiled byte code (.o) | /target |
+| jar | /target/classes |
+
+
+== pom.xml ==
+
+This is the configuration file for maven, it lives in the base directory of the
+project as pom.xml. There is a single POM file for each project
+
+A POM requires a
+
+* groupId
+* artifactId
+* version
+
+With this notation, all projects are notated as
+`groupId:artifactId:version`
+
+Example POM
+
+{{{
+
+ 4.0.0
+
+ com.companyname.project-group
+ project
+ 1.0
+
+ }}}
+
+=== Super POM ===
+
+All POM files inheret from the Super POM, this file is the default
+configuration of all projects.
+
+To view the current configuration, run `mvn help:effective-pom`
+
+== Creating a project ==
+
+Maven uses archetype plugins to create projects. These are essentially
+templates.
+
+To create a simple java application, run the following command
+
+{{{
+mvn archetype:generate \
+ -DgroudId = com.company.subcompany \
+ -DartifactId = ProjectName \
+ -DarchetypeArtifactId = maven-archetype-quickstart \
+ -DinteractiveMode = false
+ }}}
+
+This command specifies,
+
+* the group
+* the project
+* the type of template to use (quickstarrt)
+* to not be interactive
+
+== Build lifecycle ==
+
+The general lifecycle, or sequence of phases that maven takes are as follows
+
+| phase | handles |
+| prepare-resources | resource copying |
+| validate | validate if all resources present |
+| compile | compilation |
+| test | testing with a framework |
+| package | packaging (into jar) |
+| install | installing in local repo |
+| deploy | copy final package to remote repo |
+
+== Plugins ==
+
+All functionality in maven is in frameworks, making it modular. Maven built in
+plugins due most basic operations including
+
+* creating jar files
+* create war file
+* compile code files
+* unit testing
+* create documenation
+* create reports
+
+Some built in plugins include,
+
+| name | job |
+| clean | clean up target |
+| compiler | compile java source |
+| surefire | run JUnit tests |
+| jar | build JAR file |
+| war | build WAR file |
+| javadoc | create javadoc |
+| antrun | run ant tasks from any phase |
+
+=== Site ===
+
+Site is a plugin to create documentation to create reports, deploy site, etc
+
+== Build profiles ==
+
+Build profiles can be specified with the `-P` flag when `mvn` is called.
+Profiles can be configured with the `` tag. A more thurough example
+is below
+
+{{{
+
+
+ test
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.1
+
+
+ test
+
+ run
+
+
+
+ Using env.test.properties
+
+
+
+
+
+
+
+
+
+
+ }}}
+
+Note that at the `` tag, you can specify what happens when that profile
+is selected. In this instance, it copies a properties files to the correct
+directory. The name of the profile that is passed on the command line is
+configured with the `` tag.
+
+Activation elements can be added to build profiles with the `` tag.
+This tag can take arguments or paramaters to check against in the enviroment it
+is running, to automatically determine what profile to activate. Below are some
+examples
+
+Via enviroment var
+
+{{{
+
+ test
+
+
+ env
+ test
+
+
+
+ }}}
+
+Via OS (the example tirrgers on Windows XP)
+
+{{{
+
+ test
+
+
+ Windows XP
+ Windows
+ x86
+ 5.1.2600
+
+
+
+ }}}
+
+Via present/missing files (the example checks the path in the `` tag)
+
+{{{
+
+ test
+
+
+ target/generated-sources/axistools/wsdl2java/
+ com/companyname/group
+
+
+
+ }}}
+
+== Repositories ==
+
+A repository in maven terminology is a directory where project jars, library
+jars, plugins, etc are stored and used by maven. There are three types
+
+* local
+* central
+* remote
+
+=== Local ===
+
+A local maven repo is created first time you run maven on your machine. When
+`mvn build` is run for the first time, it downloads all dependency jars
+
+=== Central ===
+
+The central repo is one provided by the maven community, it contains common
+libraries. When a dependency is not found in the local repo, it automatically
+searches the central repo.
+
+In general key concepts,
+
+* managed by maven community
+* not required to be configured
+* must have internet
+
+=== Remote ===
+
+A remote repo is only searched when specified via the `` tag in
+the pom.xml file. It specifies a url for maven to search on. These repos are
+usually internal repos maintained by companies internally.
+