mkdir -p target/classes/ javac -cp lib/log4j-1.2.8.jar src/ -d target/classes/ cp `find src/ -type f | grep -v *.java` target/classes/ jar -c target/example-1.0.jar target/classes/
rm -r target/
$ ant dist
<project name="example" default="compile" basedir="."> <property name="app.name" value="example"/> <property name="app.version" value="1.0"/> <property name="build.home" value="${basedir}/target" /> <target name="clean" description="Delete old build directory"> <delete dir="${build.home}" /> </target> <target name="dist" depends="compile"> <jar destfile="${build.home}/${app.name}${app.version}.jar"> <fileset dir="${build.home}/classes"><include name="**/*.*" /></fileset> </jar> </target> <target name="compile" description="Compile project"> <mkdir dir="${build.home}/classes/" /> <javac srcdir="${basedir}/src/java" destdir="${build.home}/classes"> <classpath> <pathelement location="${basedir}/lib/log4j-1.2.8.jar" /> </classpath> </javac> </target> </project>
$ mvn package
<project> <modelVersion>4.0.0</modelVersion> <groupId>cz.softeu</groupId> <artifactId>test</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
→ lepší znovupoužitelnost u Mavenu
<groupId>cz.softeu</groupId> <artifactId>my-app</artifactId> <version>1.0-SNAPSHOT</version>
cz/softeu/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.pom cz/softeu/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar cz/softeu/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT-sources.jar cz/softeu/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT-javadoc.jar
<project> <modelVersion>4.0.0</modelVersion> <groupId>cz.softeu</groupId> <artifactId>my-app</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> ...
<project> ... <name> Ukázkový projekt </name> <description> Ukázkový projekt do mé přednášky </description> <url> http://blog.softeu.cz/ </url> <inceptionYear> 2007 </inceptionYear> <licenses> LGPL </licenses> <organization> SoftEU s.r.o </organization> <developers> <developer> <id>fers</id> <name>Petr Ferschmann</name> <email>pferschmann (at) softeu (.) com</email> <organization>SoftEU s.r.o.</organization> <timezone>+1</timezone> </developer> </developers>
<contributors>...</contributors> ...
<project> ... <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <properties> <mojePromenna>hodnota</mojePromenna> <junit.version>3.8.1</junit.version> </properties> ...
<project> ... <build> <defaultGoal> install </defaultGoal> <finalName> application-${pom.version} </finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> <encoding>utf-8</encoding> </configuration> </plugin> </plugins> </build> ...
... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>vypis</id> <phase>generate-sources</phase> <configuration> <tasks> <echo message="Project is ${pom.version}"/> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ...
<build> <parent> <groupId>cz.softeu.parent</groupId> <artifactId>parent-project</artifactId> <version>1.10</version> </parent>
... <profiles> <profile> <id>test</id> <properties> <my.skip.test>false</my.skip.test> </properties> </profile> <profile> <id>fers</id> <activation> <property> <name>user.name</name> <value>fers</value> </property> </activation> </profile> ...
|-- pom.xml |-- common | `-- pom.xml |-- remote | `-- pom.xml |-- web | `-- pom.xml `-- ear `-- pom.xml
<project> ... <packaging>pom</packaging> ... <modules> <module>common</module> <module>remote</module> <module>web</module> <module>ear</module> </modules> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.3.1</version> </dependency> </dependencies> </dependencyManagement> ...
<project> ... <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> </plugin> <!-- kvůli odkazům do zdrojových textů --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jxr-plugin</artifactId> </plugin> </plugins> ...
<project> <reporting> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> </plugin>
<project> <issueManagement> <system>Bugzilla</system> <url>http://127.0.0.1/bugzilla/</url> </issueManagement> <scm> <connection>scm:svn:https://svn.firma.cz/trunk/</connection> </scm> <mailingLists>...</mailingLists> <repositories>...</repositories> <pluginRepositories>...</pluginRepositories>
<project> <ciManagement> <system>continuum</system> <url>https://continuum.firma.cz/</url> <notifiers> <notifier> <type>mail</type> <configuration> <address>pferschmann@softeu.com</address> </configuration> </notifier> </notifiers> </ciManagement>
<distributionManagement> <repository> <id>softeu-repo</id> <url>scp://repo.firma.cz/releases</url> </repository> <snapshotRepository> <id>softeu-repo</id> <url>scp://repo.firma.cz/snapshots</url> </snapshotRepository> <site> <id>softeu-repo</id> <url>scp://repo.firma.cz/sites</url> </site> </distributionManagement>