Class NativeLinkMojo

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo

    @Mojo(name="link",
          defaultPhase=PACKAGE,
          requiresDependencyResolution=COMPILE)
    public class NativeLinkMojo
    extends AbstractNativeMojo
    Link all previously built object and dependent library files into final build artifact
    • Field Detail

      • compilerProvider

        @Parameter(defaultValue="generic",
                   required=true)
        private java.lang.String compilerProvider
        Override this property if permitted by compilerProvider
        Since:
        1.0-alpha-2
      • linkerProvider

        @Parameter
        private java.lang.String linkerProvider
        Default value is ${compilerProvider}
        Since:
        1.0-alpha-2
      • linkerExecutable

        @Parameter
        private java.lang.String linkerExecutable
        Override this property if permitted by linkerProvider. Default to compilerType if not provided
        Since:
        1.0-alpha-2
      • linkerStartOptions

        @Parameter
        private java.util.List<java.lang.String> linkerStartOptions
        Additional linker command options
        Since:
        1.0-alpha-2
      • linkerMiddleOptions

        @Parameter
        private java.util.List<java.lang.String> linkerMiddleOptions
        Additional linker command options
        Since:
        1.0-alpha-2
      • linkerEndOptions

        @Parameter
        private java.util.List<java.lang.String> linkerEndOptions
        Additional linker command options
        Since:
        1.0-alpha-2
      • linkingOrderLibs

        @Parameter
        private java.util.List<java.lang.String> linkingOrderLibs
        Option to reorder dependency list, each item has the format of ${groupId}:${artifactId}
        Since:
        1.0-alpha-2
      • linkerSecondaryOutputExtensions

        @Parameter(defaultValue="")
        private java.lang.String linkerSecondaryOutputExtensions
        Comma separated extension type to be installed/deployed. Use this option to deploy library file produced by dll build on windows
        Since:
        1.0-alpha-2
      • linkerOutputDirectory

        @Parameter(defaultValue="${project.build.directory}",
                   required=true)
        protected java.io.File linkerOutputDirectory
        Where to place the final packaging
        Since:
        1.0-alpha-2
      • linkerFinalName

        @Parameter(defaultValue="${project.build.finalName}",
                   required=true)
        private java.lang.String linkerFinalName
        The name of the generated file
        Since:
        1.0-alpha-8
      • linkerFinalNameExt

        @Parameter(defaultValue="${project.artifact.artifactHandler.extension}",
                   required=true)
        private java.lang.String linkerFinalNameExt
        The extension of the generated file. Unless specified, the extension of the main project artifact is used.
        Since:
        1.0-alpha-9
      • manager

        @Component
        private LinkerManager manager
        Internal
        Since:
        1.0-alpha-2
      • artifactFactory

        @Component
        private org.apache.maven.artifact.factory.ArtifactFactory artifactFactory
        Internal
        Since:
        1.0-alpha-2
      • externalLibDirectory

        @Parameter(defaultValue="${project.build.directory}/lib",
                   required=true)
        private java.io.File externalLibDirectory
        Dependent libraries with version + classifier removed are copied to this directory to be linked to the build artifact
      • classifier

        @Parameter
        private java.lang.String classifier
        Option to install primary artifact as a classifier, useful to install/deploy debug artifacts
        Since:
        1.0-alpha-2
      • attach

        @Parameter(defaultValue="true")
        private boolean attach
        Attach the linker's outputs to maven project be installed/deployed. Turn this off if you have other mean of deployment, for example using maven-assembly-plugin to deploy your own bundle
        Since:
        1.0-alpha-2
      • usingLinkerResponseFile

        @Parameter(defaultValue="false")
        private boolean usingLinkerResponseFile
        For project with lots of object files on windows, turn this flag to resolve Windows commandline length limit
        Since:
        1.0-alpha-7
      • checkStaleLinkage

        @Parameter(defaultValue="false")
        private boolean checkStaleLinkage
        Enable this option to speed up linkage for large project with no dependencies changes
        Since:
        1.0-alpha-8
    • Constructor Detail

      • NativeLinkMojo

        public NativeLinkMojo()
    • Method Detail

      • execute

        public void execute()
                     throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • createLinkerConfiguration

        private LinkerConfiguration createLinkerConfiguration()
                                                       throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • getLinker

        private Linker getLinker()
                          throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • attachPrimaryArtifact

        private void attachPrimaryArtifact()
      • attachSecondaryArtifacts

        private void attachSecondaryArtifacts()
      • getLibFileNames

        private java.util.List<java.lang.String> getLibFileNames()
                                                          throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • getDependenciesFileOrderList

        private java.util.List<java.lang.String> getDependenciesFileOrderList()
                                                                       throws org.apache.maven.plugin.MojoExecutionException
        convert dependencyLinkingOrders to a file list
        Returns:
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • lookupDependencyUsingGroupArtifactIdPair

        private org.apache.maven.artifact.Artifact lookupDependencyUsingGroupArtifactIdPair​(java.lang.String groupArtifactIdPair)
                                                                                     throws org.apache.maven.plugin.MojoExecutionException
        Look up library in dependency list using groupId:artifactId key Note: we can not use project.artifactMap due the introduction of inczip dependency where 2 dependency with the same artifactId and groupId, but differs by extension type make the map not suitable for lookup
        Parameters:
        groupArtifactIdPair -
        Returns:
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • reorderLibDependencies

        private java.util.List<java.lang.String> reorderLibDependencies​(java.util.List<java.lang.String> libs)
                                                                 throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • getDependencyFile

        private java.io.File getDependencyFile​(org.apache.maven.artifact.Artifact artifact,
                                               boolean doCopy)
                                        throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException