Last updated April 28, 2009 18:27, by shannon
Feedicon  

JavaMail Workspace Structure

Here's the structure of the JavaMail workspace, showing the different maven modules I needed to create to allow JavaMail to be built by maven.

First, the main maven module, including the assembly descriptor used to build the distribution zip file.

 assembly.xml
 pom.xml


Then, some files left over from the ant build.

 ant-common.xml
 build.properties
 build.xml
 mbox.xml
 project.properties
 project.xml


Finally, some files for checking that the API signatures match the spec (not yet integrated into the build).

 mail.sig
 siggen
 sigtest


The main JavaMail source code module, containing all the code that goes into mail.jar.

 mail/pom.xml
 mail/src/main/java/com/sun/mail/handlers/image_gif.java
 ...
 mail/src/main/java/com/sun/mail/util/UUEncoderStream.java
 mail/src/main/java/javax/mail/Address.java
 ...
 mail/src/main/java/javax/mail/util/package.html
 mail/src/main/java/overview.html
 mail/src/main/resources/META-INF/MANIFEST.MF
 mail/src/main/resources/META-INF/javamail.charset.map
 mail/src/main/resources/META-INF/javamail.default.address.map
 mail/src/main/resources/META-INF/javamail.default.providers
 mail/src/main/resources/META-INF/mailcap
 mail/src/oldtest/java/javax/mail/internet/addrlist
 ...
 mail/src/oldtest/java/javax/mail/internet/tokenlist


Several modules containing demo source code. They're buildable to make sure they do build before shipping them, but they're shipped only as source code. Note the embedded README.txt files. Where should they really come from? I can put them in another location, but that would just complicate the assembly descriptor.

 demo/pom.xml
 demo/src/main/java/CRLFOutputStream.java
 demo/src/main/java/NewlineOutputStream.java
 demo/src/main/java/README.txt
 demo/src/main/java/copier.java
 demo/src/main/java/folderlist.java
 demo/src/main/java/internal/...
 demo/src/main/java/monitor.java
 demo/src/main/java/mover.java
 demo/src/main/java/msgmultisendsample.java
 demo/src/main/java/msgsend.java
 demo/src/main/java/msgsendsample.java
 demo/src/main/java/msgshow.java
 demo/src/main/java/namespace.java
 demo/src/main/java/populate.java
 demo/src/main/java/registry.java
 demo/src/main/java/search.java
 demo/src/main/java/sendfile.java
 demo/src/main/java/sendhtml.java
 demo/src/main/java/smtpsend.java
 demo/src/main/java/transport.java
 demo/src/main/java/uidmsgshow.java
 client/pom.xml
 client/src/main/java/ComponentFrame.java
 client/src/main/java/FolderModel.java
 client/src/main/java/FolderTreeNode.java
 client/src/main/java/FolderViewer.java
 client/src/main/java/MessageViewer.java
 client/src/main/java/MultipartViewer.java
 client/src/main/java/README.txt
 client/src/main/java/SimpleAuthenticator.java
 client/src/main/java/SimpleClient.java
 client/src/main/java/StoreTreeNode.java
 client/src/main/java/TextViewer.java
 client/src/main/java/simple.mailcap
 servlet/pom.xml
 servlet/src/main/java/JavaMail.html
 servlet/src/main/java/JavaMailServlet.java
 servlet/src/main/java/README.txt
 webapp/build.bat
 webapp/build.sh
 webapp/pom.xml
 webapp/src/main/java/demo/AttachmentServlet.java
 webapp/src/main/java/demo/FilterServlet.java
 webapp/src/main/java/demo/MailUserBean.java
 webapp/src/main/webapp/WEB-INF/web.xml
 webapp/src/main/webapp/compose.jsp
 webapp/src/main/webapp/errordetails.jsp
 webapp/src/main/webapp/errorpage.jsp
 webapp/src/main/webapp/folders.jsp
 webapp/src/main/webapp/index.html
 webapp/src/main/webapp/login.jsp
 webapp/src/main/webapp/logout.jsp
 webapp/src/main/webapp/messagecontent.jsp
 webapp/src/main/webapp/messageheaders.jsp
 webapp/src/main/webapp/send.jsp
 webapp/webapp.README.txt
 taglib/pom.xml
 taglib/src/main/java/demo/AttachmentInfo.java
 taglib/src/main/java/demo/ListAttachmentsTEI.java
 taglib/src/main/java/demo/ListAttachmentsTag.java
 taglib/src/main/java/demo/ListMessagesTEI.java
 taglib/src/main/java/demo/ListMessagesTag.java
 taglib/src/main/java/demo/MessageInfo.java
 taglib/src/main/java/demo/MessageTEI.java
 taglib/src/main/java/demo/MessageTag.java
 taglib/src/main/java/demo/SendTag.java
 taglib/src/main/resources/META-INF/taglib.tld


Several modules that extract subsets of the mail.jar file to build other jar files. The source code for each of these jar files could be moved into these modules, and then mail.jar could be constructed by combining all these jar files. I did it this way because I like having all the source code in one place, but it's probably less maven-like.

 mailapi/pom.xml
 imap/pom.xml
 imap/src/main/resources/META-INF/MANIFEST.MF
 imap/src/main/resources/META-INF/javamail.providers
 pop3/pom.xml
 pop3/src/main/resources/META-INF/MANIFEST.MF
 pop3/src/main/resources/META-INF/javamail.providers
 smtp/pom.xml
 smtp/src/main/resources/META-INF/MANIFEST.MF
 smtp/src/main/resources/META-INF/javamail.address.map
 smtp/src/main/resources/META-INF/javamail.providers


A module to act as parent of the imap, pop3, and smtp modules to allow sharing of some common rules.

 parent-distrib/pom.xml


A module that contains only the Delivery Status Notification support. I moved all the source code here because none of this appears in mail.jar.

 dsn/pom.xml
 dsn/src/main/java/com/sun/mail/dsn/DeliveryStatus.java
 dsn/src/main/java/com/sun/mail/dsn/MessageHeaders.java
 dsn/src/main/java/com/sun/mail/dsn/MultipartReport.java
 dsn/src/main/java/com/sun/mail/dsn/message_deliverystatus.java
 dsn/src/main/java/com/sun/mail/dsn/multipart_report.java
 dsn/src/main/java/com/sun/mail/dsn/package.html
 dsn/src/main/java/com/sun/mail/dsn/text_rfc822headers.java
 dsn/src/main/resources/META-INF/MANIFEST.MF
 dsn/src/main/resources/META-INF/mailcap


The mbox protocol provider module. Again, source code moved here because none of this appears in mail.jar. Also includes a submodule to build the native code (even though the native source code is in the upper module; is that too weird?), and a submodule to build a distribution zip file containing all of the mbox provider. Possibly this should be inverted so that the distribution module is the top level module and the java and native modules are submodules.

 mbox/pom.xml
 mbox/src/main/cpp/com/sun/mail/mbox/UNIXFile.c
 mbox/src/main/cpp/com/sun/mail/mbox/UNIXInbox.c
 mbox/src/main/java/com/sun/mail/mbox/ContentLengthCounter.java
 ...
 mbox/src/main/java/com/sun/mail/mbox/UNIXInbox.java
 mbox/src/main/java/com/sun/mail/remote/POP3RemoteStore.java
 mbox/src/main/java/com/sun/mail/remote/RemoteDefaultFolder.java
 mbox/src/main/java/com/sun/mail/remote/RemoteInbox.java
 mbox/src/main/java/com/sun/mail/remote/RemoteStore.java
 mbox/src/main/resources/META-INF/MANIFEST.MF
 mbox/src/main/resources/META-INF/javamail.providers
 mbox/native/pom.xml
 mbox/dist/assembly.xml
 mbox/dist/pom.xml


A module just for building the javadocs. Putting these rules in the parent pom.xml just didn't work so I moved them here.

 javadoc/pom.xml


Finally, the documentation. Not a module, but most of it is included in the distribution zip file.

 doc/release/ApacheJServ.html
 doc/release/BLURB
 doc/release/CHANGES.txt
 doc/release/COMPAT.txt
 doc/release/JavaWebServer.html
 doc/release/LICENSE.txt
 doc/release/NOTES.txt
 doc/release/README.txt
 doc/release/SSLNOTES.txt
 doc/release/Tomcat.html
 doc/release/classpath-NT.html
 doc/release/distributionREADME.txt
 doc/release/iPlanet.html
 doc/release/images/direct-classpath.jpg
 doc/release/images/indirect-classpath.jpg
 doc/spec/JavaMail-1.1-changes.txt
 doc/spec/JavaMail-1.2-changes.txt
 doc/spec/JavaMail-1.3-changes.txt
 doc/spec/JavaMail-1.4-changes.txt
  • Mysql
  • Glassfish
  • Jruby
  • Rails
  • Nblogo
Terms of Use; Privacy Policy;
© 2010, Oracle Corporation and/or its affiliates
(revision 20120518.3c65429)
 
 
Close
loading
Please Confirm
Close