The Maven Cookbook the Maven Cookbook

Total Page:16

File Type:pdf, Size:1020Kb

The Maven Cookbook the Maven Cookbook Edition 0.4 Maven Nexus m2eclipse The Maven Cookbook The Maven Cookbook Tim O’Brien Stuart McCulloch Brian Demers A Sonatype Open Book Mountain View, CA Copyright © 2010 Sonatype, Inc. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States license. For more information about this license, see http://creativecommons.org/licenses/by-nc-nd/3.0/us/. You are free to share, copy, distribute, display, and perform the work under the following conditions: • You must attribute the work to Sonatype, Inc. with a link to http://www.sonatype.com. • You may not use this work for commercial purposes. • You may not alter, transform, or build upon this work. Nexus™, Nexus Professional™, and all Nexus-related logos are trademarks or registered trademarks of Sonatype, Inc., in the United States and other countries. Java™ and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc., in the United States and other countries. IBM® and WebSphere® are trademarks or registered trademarks of International Business Machines, Inc., in the United States and other countries. Eclipse™ is a trademark of the Eclipse Foundation, Inc., in the United States and other countries. Apache and the Apache feather logo are trademarks of The Apache Software Foundation. Many of the designations used by manufacturers and sellers to distinguish their prod- ucts are claimed as trademarks. Where those designations appear in this book, and Sonatype, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. Published by: For online information and ordering of this and other Sonatype books, please visit www.sonatype.com. The Sonatype, Inc. publisher oers discounts on this book when ordered in 12501 Prosperity Drive quantity. For more information, please contact: Suite 350 [email protected] Silver Spring, MD 20904. ISBN 978-0-9842433-2-7 Editor: Tim O’Brien Nexus Professional Nexus Professional 1.6 is now available with a wide array of new features. This release introduces new staging and repository management capabilities as well as improved permissions management tools. Download your free, 30-day evaluation today. "We have adopted Maven for all our software development projects and have started using Nexus to better support our development processes. The support for promotion and procurement workows in Nexus Professional now expands Nexus with a robust set of additional features which make it easier for us to maintain consistency between our development, testing and production environments." - Chris Maki, Principal Software Engineer, Overstock.com "At Intuit, we recognize that as builds grow and the teams who create them change over time, swift, accurate repository management becomes critical. Nexus provides a comprehensive, easy-to-use open source solution that lets teams and developers track, search, organize and access build components." - Kaizer Sogiawala, Software Conguration Management Engineer, Intuit. http://www.sonatype.com/products/nexus Maven Training by Sonatype With Sonatype training, you will learn Maven fundamentals and best practices directly from Maven and Nexus experts. If your team is using Nexus, this class is the easiest way to make sure that everyone starts from the same foundation. MVN-101 Maven Mechanics An online instructor-led course of two half-day sessions, ideal for programmers who work with Maven projects and need to understand how to work with an existing Maven build. This class is also appropriate for experienced Maven users who are inter- ested in becoming more familiar with Maven fundamentals. MVN-201 Development Infrastructure Design An online instructor-led course of two half-day sessions, ideal for Development Infra- structure Engineers who are responsible for maintaining enterprise development infra- structure. This class includes content on advanced repository management using Nexus and continuous integration using Hudson. http://www.sonatype.com/training Copyright ............................................................................................................................................................ ix Foreword: 0.5-SNAPSHOT .................................................................................................................................... xi 1. Changes in Edition 0.4 ............................................................................................................................... xi 1. Cooking with Maven and OSGi ............................................................................................................................ 1 1.1. Introduction ............................................................................................................................................ 1 1.2. Generating an OSGi Project with Maven ..................................................................................................... 1 1.3. Starting an OSGi Container ....................................................................................................................... 3 1.4. Importing OSGi Bundles with Maven ......................................................................................................... 5 1.5. Creating an OSGi Bundle with Maven ........................................................................................................ 9 1.6. Starting an Alternative OSGi Framework (Knopflerfish) ............................................................................... 13 1.7. Starting an Alternative OSGi Framework (Equinox) ..................................................................................... 15 1.8. Deploying OSGi Bundles to a Maven Repository ........................................................................................ 16 1.9. Transforming a Maven Repository into an OSGi Bundle Repository ................................................................ 21 1.10. Proxying OSGi Bundle Repositories ........................................................................................................ 24 1.11. Grouping OSGi Bundle Repositories ....................................................................................................... 29 2. Groovy Maven ................................................................................................................................................. 33 2.1. Introduction .......................................................................................................................................... 33 2.2. Running an Inline Groovy Script in a Maven Build ...................................................................................... 33 2.3. Executing Groovy Scripts in a Maven Build ............................................................................................... 35 2.4. Writing Plugins in Groovy ...................................................................................................................... 36 3. Scala and Maven .............................................................................................................................................. 39 3.1. Introduction .......................................................................................................................................... 39 3.2. Running an Inline Scala Script in a Maven Build ........................................................................................ 39 3.3. Running an External Scala Script in a Maven Build ..................................................................................... 41 4. Ant and Maven ................................................................................................................................................ 45 4.1. Introduction .......................................................................................................................................... 45 4.2. Running an Inline Ant Script in a Maven Build ........................................................................................... 45 4.3. Running an External Ant Script in a Maven Build ....................................................................................... 46 4.4. Creating an Ant Maven Plugin ................................................................................................................. 47 5. Ruby and Maven .............................................................................................................................................. 51 5.1. Introduction .......................................................................................................................................... 51 5.2. Writing Plugins in JRuby ........................................................................................................................ 51 6. Web Development ............................................................................................................................................ 57 6.1. Running a Web Application in a Servlet Container ...................................................................................... 57 6.2. Configuring a Servlet Container ..............................................................................................................
Recommended publications
  • Log4j-Users-Guide.Pdf
    ...................................................................................................................................... Apache Log4j 2 v. 2.2 User's Guide ...................................................................................................................................... The Apache Software Foundation 2015-02-22 T a b l e o f C o n t e n t s i Table of Contents ....................................................................................................................................... 1. Table of Contents . i 2. Introduction . 1 3. Architecture . 3 4. Log4j 1.x Migration . 10 5. API . 16 6. Configuration . 18 7. Web Applications and JSPs . 48 8. Plugins . 56 9. Lookups . 60 10. Appenders . 66 11. Layouts . 120 12. Filters . 140 13. Async Loggers . 153 14. JMX . 167 15. Logging Separation . 174 16. Extending Log4j . 176 17. Extending Log4j Configuration . 184 18. Custom Log Levels . 187 © 2 0 1 5 , T h e A p a c h e S o f t w a r e F o u n d a t i o n • A L L R I G H T S R E S E R V E D . T a b l e o f C o n t e n t s ii © 2 0 1 5 , T h e A p a c h e S o f t w a r e F o u n d a t i o n • A L L R I G H T S R E S E R V E D . 1 I n t r o d u c t i o n 1 1 Introduction ....................................................................................................................................... 1.1 Welcome to Log4j 2! 1.1.1 Introduction Almost every large application includes its own logging or tracing API. In conformance with this rule, the E.U.
    [Show full text]
  • Introduction to Apache Maven 2 Skill Level: Intermediate
    Introduction to Apache Maven 2 Skill Level: Intermediate Sing Li ([email protected]) Author Wrox Press 19 Dec 2006 Modern software projects are no longer solely monolithic creations of single local project teams. With the increased availability of robust, enterprise-grade open source components, today's software projects require dynamic collaboration among project teams and often depend on a mix of globally created and maintained components. Now in its second generation, the Apache Maven build system -- unlike legacy build tools created before the Internet-enabled era of global software development -- was designed from the ground up to take on these modern challenges. This tutorial gets you started with Maven 2. Section 1. Before you start Modern software development based on robust, enterprise-grade open source technologies requires a new breed of build and project collaboration tool. The engine at the core of Apache Maven 2 works to simplify building and managing large and often complex collaborative software projects. Yet Maven 2's design aims to be friendly even to developers unfamiliar with the challenges of working in large project team environments. Focusing initially on the beginner single developer, this tutorial gradually introduces some of the collaborative concepts and features that are available with Maven 2. You are encouraged to build on the introduction this tutorial provides by exploring the advanced features of Maven 2 that are beyond its scope. About this tutorial This tutorial guides you step-by-step through the fundamental concepts and hands-on exercises with Maven 2: • Overview of Maven 2 Introduction to Apache Maven 2 © Copyright IBM Corporation 1994, 2008.
    [Show full text]
  • Top 19 Testng Interview Questions & Answers
    https://career.guru99.com/ Guru99 Provides FREE ONLINE TUTORIAL on Various courses like Java | MIS | MongoDB | BigData | Cassandra | Web Services ------------------------------------------------------------------------------------------------------------------------------- SQLite | JSP | Informatica | Accounting | SAP Training | Python ------------------------------------------------------------------------------------------------------------------------------- Excel | ASP Net | HBase | Testing | Selenium | CCNA | NodeJS ------------------------------------------------------------------------------------------------------------------------------- TensorFlow | Data Warehouse | R Programming | Live Projects | DevOps ------------------------------------------------------------------------------------------------------------------------------- Top 19 TestNG Interview Questions & Answers Following are frequently asked questions in interviews for freshers as well as experienced TestNG professionals. 1) What is TestNG? TestNG is an automated open source testing framework. It is based on JUnit framework but is not a JUnit extension. 2) What are the TestNG features? TestNG features include TestNG uses more OO (object-oriented) and Java features It supports testing integrated classes Different Annotations are supported Separate compile time test code from data info /run time configuration Run-time configuration is flexible Flexible plug-in API For further flexibility embeds BeanShell Multi-threaded selenium testing support Supports parallel testing,
    [Show full text]
  • Apache Ant Best Practices
    08_Lee_ch05.qxd 5/3/06 5:12 PM Page 81 C HAPTER 5 Apache Ant Best Practices This chapter looks in more detail at some best practices for using Ant on real projects. First I describe the use of property files to enable configuration of the build process depending on a user’s role and requirements. I then describe how best to integrate Ant with IBM Rational ClearCase. Finally, I look at some general best practices for supporting the build process on large projects. Aims of This Chapter Apache Ant is a powerful build tool with significant built-in capabilities. However, a few capabil- ities and best practices stand out; they are described here. After reading this chapter, you will be able to • Understand what Ant property files are and how they can be used to make build scripts more maintainable. • Understand how to use Ant’s capabilities to better integrate with IBM Rational ClearCase. • Implement Ant build files that support reuse and maintainability on large projects. This chapter assumes that you are familiar with the basic concepts of Apache Ant that were discussed in Chapter 4, “Defining Your Build and Release Scripts.” Property Files From the perspective of Chapter 4, an Ant build.xml file is a single centralized build file that defines a repeatable process for bringing together an application, usually producing some form of 81 08_Lee_ch05.qxd 5/3/06 5:12 PM Page 82 82 Chapter 5 Apache Ant Best Practices executable output. Although a single build.xml file can be enough to drive the build process, in practice it can quickly become large and unwieldy.
    [Show full text]
  • Proof of Concept (Poc) Selenium Web Driver Based Automation Framework
    e-ISSN (O): 2348-4470 Scientific Journal of Impact Factor (SJIF): 4.72 p-ISSN (P): 2348-6406 International Journal of Advance Engineering and Research Development Volume 4, Issue 7, July -2017 Proof of concept (Poc) selenium web driver based Automation framework B AJITH KUMAR Master of science ( Information Technology ) Department of Mathematics COLLEGE OF ENGINNERING GUINDY (CEG) Anna university ABSTRACT: To control test execution time. Software testing is a process of executing a program or application with the intent of finding the software bugs. It can also be stated as the process of validating and verifyingthat a software program or application or product: Meets the business and technical requirements that guided it’s design and development. Works as expected. KEY WORDS: SOFTWARE TESTING .AUTOMATION TESTING ,SELENIUM, SELENIUM WEBDRIVER ,AGILE TESTING , TESTNG Test automation : In software testing, test automation is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place, or add additional testing that would be difficult to perform manually. AGILE TESTING : A software testing practice that follows the principles of agile software development is called Agile Testing. Agile is an iterative development methodology, where requirements evolve through collaboration between the customer and self- organizing teams and agile aligns development with customer needs. Selenium automation tool Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser.
    [Show full text]
  • Building, Deploying and Testing DPES Application
    1 Building, Deploying and Testing DPES application This chapter provides updated instructions for accessing the sources code, developing, building and deploying the DPES application in the user environment. DPES development environment is split into two part 1. Backend DPES webserver – Maven Java Project and 2. DPES Frontend Adobe Flash UI project using flex 3 SDK. The following instruction covers both development environments. 1.1 Development Environment This section is useful for developers who wants to develop the DPES tools by extending some features which are already exists in the project or create some additional new features based users need. Source codes are freely available to the developer community at TIMBUS open source repository i. It is assumed that the developer would have sufficient knowledge on Java, Maven, Eclipse, Version controls such as Git and eGit and flex development. Hence the scope of this document is restricted to detailing DPES application only rather than providing information for setting up the above said technologies. 1.1.1 DPES Webserver System Requirements · Java Development Kit (JDK) (version 1.7_17 or above) ii · Apache Maven plugin for Eclipse (version – 3.2.3) iii · Eclipse IDE for Java EE Developers (version – Juno or later) iv · Tomcat Web Servlet Container ( version – 7 or above) v · EGit plugin for eclipse vi · H2 data base for DPES registry (version – 1.3.173) vii 1.1.2 DPES UI application System Requirements Adobe Flex Development Tools · Flex builder 3 standalone or plugin to eclipse · Flex SDK
    [Show full text]
  • Maven by Example I
    Maven by Example i Maven by Example Ed. 0.7 Maven by Example ii Contents 1 Introducing Apache Maven1 1.1 Maven. What is it?....................................1 1.2 Convention Over Configuration...............................2 1.3 A Common Interface....................................3 1.4 Universal Reuse through Maven Plugins..........................3 1.5 Conceptual Model of a “Project”..............................4 1.6 Is Maven an alternative to XYZ?..............................5 1.7 Comparing Maven with Ant................................6 2 Installing Maven 10 2.1 Verify your Java Installation................................ 10 2.2 Downloading Maven.................................... 11 2.3 Installing Maven...................................... 11 Maven by Example iii 2.3.1 Installing Maven on Linux, BSD and Mac OS X................. 11 2.3.2 Installing Maven on Microsoft Windows...................... 12 2.3.2.1 Setting Environment Variables..................... 12 2.4 Testing a Maven Installation................................ 13 2.5 Maven Installation Details................................. 13 2.5.1 User-Specific Configuration and Repository.................... 14 2.5.2 Upgrading a Maven Installation.......................... 15 2.6 Uninstalling Maven..................................... 15 2.7 Getting Help with Maven.................................. 15 2.8 About the Apache Software License............................ 16 3 A Simple Maven Project 17 3.1 Introduction......................................... 17 3.1.1 Downloading
    [Show full text]
  • Open Source and Third Party Documentation
    Open Source and Third Party Documentation Verint.com Twitter.com/verint Facebook.com/verint Blog.verint.com Content Introduction.....................2 Licenses..........................3 Page 1 Open Source Attribution Certain components of this Software or software contained in this Product (collectively, "Software") may be covered by so-called "free or open source" software licenses ("Open Source Components"), which includes any software licenses approved as open source licenses by the Open Source Initiative or any similar licenses, including without limitation any license that, as a condition of distribution of the Open Source Components licensed, requires that the distributor make the Open Source Components available in source code format. A license in each Open Source Component is provided to you in accordance with the specific license terms specified in their respective license terms. EXCEPT WITH REGARD TO ANY WARRANTIES OR OTHER RIGHTS AND OBLIGATIONS EXPRESSLY PROVIDED DIRECTLY TO YOU FROM VERINT, ALL OPEN SOURCE COMPONENTS ARE PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. Any third party technology that may be appropriate or necessary for use with the Verint Product is licensed to you only for use with the Verint Product under the terms of the third party license agreement specified in the Documentation, the Software or as provided online at http://verint.com/thirdpartylicense. You may not take any action that would separate the third party technology from the Verint Product. Unless otherwise permitted under the terms of the third party license agreement, you agree to only use the third party technology in conjunction with the Verint Product.
    [Show full text]
  • Taming Functional Web Testing with Spock and Geb
    Taming Functional Web Testing with Spock and Geb Peter Niederwieser, Gradleware Creator, Spock Contributor, Geb The Actors Spock, Geb, Page Objects Spock “Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDEs, build tools, and continuous integration servers. Spock is inspired from JUnit, RSpec, jMock, Mockito, Groovy, Scala, Vulcans, and other fascinating life forms. Spock (ctd.) http://spockframework.org ASL2 licence Serving mankind since 2008 Latest releases: 0.7, 1.0-SNAPSHOT Java + Groovy JUnit compatible Loves Geb Geb “Geb is a browser automation solution. It brings together the power of WebDriver, the elegance of jQuery content selection, the robustness of Page Object modelling and the expressiveness of the Groovy language. It can be used for scripting, scraping and general automation — or equally as a functional/web/acceptance testing solution via integration with testing frameworks such as Spock, JUnit & TestNG. Geb (ctd.) http://gebish.org ASL2 license Serving mankind since 2009 Latest releases: 0.7.2, 1.0-SNAPSHOT Java + Groovy Use with any test framework Loves Spock First-class page objects Page Objects “The Page Object pattern represents the screens of your web app as a series of objects. Within your web app's UI, there are areas that your tests interact with. A Page Object simply models these as objects within the test code. This reduces the amount of duplicated code and means that if the UI changes, the fix need only be applied in one place.
    [Show full text]
  • Comparative Analysis of Junit and Testng Framework
    International Research Journal of Engineering and Technology (IRJET) e-ISSN: 2395-0056 Volume: 05 Issue: 05 | May-2018 www.irjet.net p-ISSN: 2395-0072 Comparative Analysis of JUnit and TestNG framework Manasi Patil1, Mona Deshmukh2 Student, Dept. of MCA, VES Institute of Technology, Maharashtra, India1 Professor, Dept. of MCA, VES Institute of Technology, Maharashtra, India2 ---------------------------------------------------------------------***--------------------------------------------------------------------- Abstract - Testing is an important phase in SDLC, Testing It is flexible than Junit and supports parametrization, parallel can be manual or automated. Nowadays Automation testing is execution and data driven testing. widely used to find defects and to ensure the correctness and The Table – 1 compares different functionalities of TestNG completeness of the software. Open source framework can be and JUnit framework. used for automation testing such as Robotframework, Junit, Spock, NUnit, TestNG, Jasmin, Mocha etc. This paper compares Table -1: Functionality TestNG vs JUnit JUnit and TestNG based on their features and functionalities. Key Words: JUnit, TestNG, Automation Framework, Functionality TestNG JUnit Automation Testing, Selenium TestNG, Selenium JUnit Yes 1. INTRODUCTION Support Annotations Yes Yes Support Test Suit Initialization Yes Testing a software manually is tedious work, and takes lot of No time and efforts. Automation saves lot of time and money, Support for Tests groups Yes also it increases the test coverage
    [Show full text]
  • Java Test Driven Development with Testng
    "Charting the Course ... ... to Your Success!" Java Test Driven Development with TestNG Course Summary Description Test Driven Development (TDD) has become a standard best practice for developers, especially those working in an Agile development environment. TDD is more than just automated unit testing, it is a team and individual development discipline that, when followed correctly, increases productivity of both individual developers and entire teams. From the programmer’s perspective, TDD has another benefit – it allows programmers to eliminate the tedious tasks of debugging and reworking code so that programmers can focus on the creative work of designing and writing code. It makes programming fun again. The course integrates two primary learning streams. The first is the how to effectively implement TDD in a production or development environment and integrating TDD practices with other practices like software craftsmanship, agile design practices, continuous integration and best practices in object oriented programming and Java development. The second learning stream is an in depth and hands on deep dive into Java TDD tools such as mocking libraries, matching libraries and the TestNG framework itself. TestNG (Test Next Generation) is a test framework inspired by JUnit and NUnit but with additional features and functionality The class is designed to be about 50% hands on labs and exercises, about 25% theory and 25% instructor led hands on learning where students code along with the instructor. Topics The TDD process - “red, green,
    [Show full text]
  • Programming-In-Scala.Pdf
    Cover · Overview · Contents · Discuss · Suggest · Glossary · Index Programming in Scala Cover · Overview · Contents · Discuss · Suggest · Glossary · Index Programming in Scala Martin Odersky, Lex Spoon, Bill Venners artima ARTIMA PRESS MOUNTAIN VIEW,CALIFORNIA Cover · Overview · Contents · Discuss · Suggest · Glossary · Index iv Programming in Scala First Edition, Version 6 Martin Odersky is the creator of the Scala language and a professor at EPFL in Lausanne, Switzerland. Lex Spoon worked on Scala for two years as a post-doc with Martin Odersky. Bill Venners is president of Artima, Inc. Artima Press is an imprint of Artima, Inc. P.O. Box 390122, Mountain View, California 94039 Copyright © 2007, 2008 Martin Odersky, Lex Spoon, and Bill Venners. All rights reserved. First edition published as PrePrint™ eBook 2007 First edition published 2008 Produced in the United States of America 12 11 10 09 08 5 6 7 8 9 ISBN-10: 0-9815316-1-X ISBN-13: 978-0-9815316-1-8 No part of this publication may be reproduced, modified, distributed, stored in a retrieval system, republished, displayed, or performed, for commercial or noncommercial purposes or for compensation of any kind without prior written permission from Artima, Inc. All information and materials in this book are provided "as is" and without warranty of any kind. The term “Artima” and the Artima logo are trademarks or registered trademarks of Artima, Inc. All other company and/or product names may be trademarks or registered trademarks of their owners. Cover · Overview · Contents · Discuss · Suggest · Glossary · Index to Nastaran - M.O. to Fay - L.S. to Siew - B.V.
    [Show full text]