📈
Development Docs - Java
  • Introduction
  • General
    • Compiling and running
    • Code Style
    • Operators
    • Control Flow
    • Inheritance
    • Enums
    • Manifest
    • Immutable and Unmodifiable
    • Regular Expression
    • Executable class
    • Text Formatting
  • Beans and Objects
    • Primitives
    • Variables
    • Java Beans
    • Serialization
    • Hashcode, equals and toString
  • Generics
    • General
    • Generic Methods
    • Bound Parameters
    • Wildcards
    • Type Erasure
    • Type Parameter Naming Conventions
  • Documentation
    • Comments
    • Javadoc
      • Code Example
  • Collections and Data Structures
    • Arrays
    • Iterable
    • Collection
    • List
    • Set
    • Queue
    • Stack
    • Map
  • Introspection
    • Properties
  • Errors and Exceptions
    • General
    • Catching Exceptions
    • Checked Exceptions
  • Functional
    • General
    • Interfaces
    • Function
    • Predicate
    • Consumer
    • Supplier
    • Method References
    • Lambdas
    • Streams
      • Common Operations
      • Searching for Values
      • Other Operations
      • Data Structure Transformations
  • Internationalization
    • General
    • Locale
    • Resource Bundle
    • Formatting
  • Java Bean Validation
    • Specification
    • Annotations
    • Validator
  • Utilities Classes
    • Libraries
    • Constants Class
    • Preconditions
    • Apache Commons
      • Strings
      • Dates
    • Guava
      • Preconditions
  • JPA
    • General
    • Logging
    • JPA Entities
    • Lifecycle
    • JPQL
    • Criteria API
  • HIBERNATE
    • Logging
      • Sessions
      • Statistics
      • Queries
      • Hibernate Properties
    • More Information
  • Ant
    • Scripts
    • Examples
      • Replace Version
      • Merge Files
      • Execute Command
  • LOGGING
    • SL4J
    • Log4j
      • Logging Levels
      • Formatted Messages
      • Templated Messages
      • Mapped Diagnostic Context
    • Hikari
  • Testing
    • Libraries
    • Junit
      • Setting Up Tests
        • JUnit 4 Tests
        • JUnit 5 Tests
      • Disable Tests
      • Test Lifecycle
      • Testing Exceptions
      • Display Name
      • Test Files
      • Extensions
        • Annotation Extension
    • Mockito
      • Mocking
      • Verify Calls
      • Throw Exceptions
      • Capture Arguments
  • KeyStore
    • Types
    • Generation
    • Certificates
    • Keys
    • Reading
  • Jackson
    • General
    • Deserialize
      • Dates
      • Enums
    • Object Hierarchy
    • Ignoring Data
    • Change Field Name
    • Mixin
  • Maven
    • Execution
      • Commands
      • Parameters
      • Building the Project
    • Deployments
      • Configuration
      • Deploying Web Projects Locally
      • Deploying Documentation
    • Tests
      • Deploying the WAR for Testing
    • Site
      • Setting Up
      • Reports
      • Theme
    • Maven Lifecycle
      • Binding Plugins to Phases
    • Dependency Management
      • Artifact Repositories
    • Maven Archetype
      • Testing Archetypes
    • Configuration
      • Project Setup
      • Maven Build Plugins
      • Profiles
        • Forcing an Active Profile
      • Default Properties
      • Parent POM
      • Settings File
      • Versions
      • Extensions
      • Setting Up the JAR
        • Attach Sources
        • Attach Javadocs
        • Manifest
    • JPA
      • Generating Metamodel
    • Frontend with Maven
      • WebJars
      • npm and Webpack
    • Continuous Integration
    • Ant
    • Executable JAR
  • Spring
    • General
    • SpEL
    • Files
    • Sending Mails
  • Spring Configuration
    • Profiles
    • Conditional Configuration
    • Properties Object
  • Spring Dependence Injection
    • Injections
      • Asking for a Specific Bean
    • Injecting Values
    • Injecting Multiple Instances
    • Interdependence
    • Component Scanning
  • Spring Beans
    • Initialization
    • Destruction
    • Extending Initialization
  • Spring Data
    • Configuration
      • Common Persistence Beans
      • Datasource
      • Persistence Providers
    • Repositories
      • Custom Repositories
      • Queries
      • Sorting and Paging
      • Example API
    • Transactional
      • Configuration
      • Annotation
      • Transaction Aspect
      • Transactional Test
  • Spring MVC
    • General
    • Setting Up a Web Application
    • Serving Resources
    • Securing URLS
    • Controllers
      • Mapping and Choosing Controller Methods
      • Mapping Controller Variables
      • Request Argument Validation
      • Controller Advices
    • Error Handling
    • Binding Configuration
    • Model Attributes
    • View Resolvers
    • Resolving Sort and Pageable Arguments
    • Logging
    • Validating Request Data
  • Spring WS
    • Examples
  • Spring Boot
    • General
    • Setting Up
    • Logging development info
    • Remote Debugging
  • Spring Security
    • Examples
    • Setting Up
      • Method Security
  • Spring AOP
    • More Information
    • Configuration
    • Aspect
    • Logging Aspect Example
  • Spring Cache
    • Configuration
  • Spring Integration
    • Gateway
    • Routing
    • Services
  • Testing Spring
    • Test configuration
    • Setting Up Junit
    • Conditional Tests
    • Initializing DB
    • Spring MVC
      • Setting Up the MVC Test Context
      • Request Path Testing
      • Testing JSON
      • Argument Resolvers
      • Response Status
  • JMeter
    • General
  • Neo4J
    • More Information
    • Cypher
    • Testing
  • JQAssistant
    • More Information
    • Maven Plugin
      • Git
      • Maven Dependencies
    • Queries
      • git
      • Tags
      • File Structure
      • Structure
      • Pruning
      • Maven
      • Controller
      • Detecting Problems
      • Persistence
    • Concepts
    • Constraints
    • Groups
    • Rules
      • Custom Rules
  • AspectJ
    • Wrapping Method
Powered by GitBook
On this page
  • Settings file
  • Profiles
  • Deployment Profiles
  • Scripts

Was this helpful?

  1. Maven

Continuous Integration

Previousnpm and WebpackNextAnt

Last updated 5 years ago

Was this helpful?

It is easy to integrate Maven with a CI project. Take advantage of profiles and Maven phases, and use a settings file for sensitive information.

The recommended steps are:

  • Running tests up to the verify phase

  • If that works deploy artifacts using Maven

Settings file

Sensitive information, such authentication data for servers, should be stored inside a Maven settings file in a protected folder.

Profiles

Deployment Profiles

Three profiles are used when deploying artifacts:

  • A generic deployment profile

  • A development deployment profile

  • A releases deployment profile

These contain a small amount of configuration, which can be extended to add anything the project may need during deployment.

The generic generic deployment profile just disables the test:

<profile>
   <!-- Deployment profile -->
   <!-- Sets ups the environment for deployment -->
   <id>deployment</id>
   <properties>
      <!-- Tests are skipped -->
      <maven.test.skip>true</maven.test.skip>
   </properties>
</profile>

Development deployment sets the development site deployment:

<profile>
   <!-- Development site deployment profile -->
   <!-- Sets the site repository to point to the development repo -->
   <id>deployment-development</id>
   <distributionManagement>
      <site>
         <id>site-development</id>
         <name>Project Development Documentation Site</name>
         <!-- The URL should be set externally -->
         <url>${site.develop.url}</url>
      </site>
   </distributionManagement>
</profile>

Release deployment sets the release site deployment:

<profile>
   <!-- Release site deployment profile -->
   <!-- Sets the site repository to point to the releases repo -->
   <id>deployment-release</id>
   <activation>
      <!-- Active by default so the repository appears in the reports -->
      <activeByDefault>true</activeByDefault>
   </activation>
   <distributionManagement>
      <site>
         <id>site</id>
         <name>Project Documentation Site</name>
         <!-- The URL should be set externally -->
         <url>${site.release.url}</url>
      </site>
   </distributionManagement>
</profile>

The site URLs properties should be defined out of the POM, inside a Maven settings file, along the sites authentication data.

Scripts

before_script:
  # Creates Maven settings
  - ~/.scripts/java/maven/create-maven-settings.sh $VERSION_TYPE

This will set up the credentials for deploying the artifacts, both the JAR/WAR and the Maven site, from environmental variables.

There is a for setting up a Maven settings file:

CI script