Package org.codehaus.mojo.natives.plugin
Class NativeLinkMojo
- java.lang.Object
-
- org.apache.maven.plugin.AbstractMojo
-
- org.codehaus.mojo.natives.plugin.AbstractNativeMojo
-
- org.codehaus.mojo.natives.plugin.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 Summary
Fields Modifier and Type Field Description private org.apache.maven.artifact.factory.ArtifactFactory
artifactFactory
Internalprivate boolean
attach
Attach the linker's outputs to maven project be installed/deployed.private boolean
checkStaleLinkage
Enable this option to speed up linkage for large project with no dependencies changesprivate java.lang.String
classifier
Option to install primary artifact as a classifier, useful to install/deploy debug artifactsprivate java.lang.String
compilerProvider
Override this property if permitted by compilerProviderprivate LinkerConfiguration
config
For unit test onlyprivate java.io.File
externalLibDirectory
Dependent libraries with version + classifier removed are copied to this directory to be linked to the build artifactprivate java.util.List<java.lang.String>
linkerEndOptions
Additional linker command optionsprivate java.lang.String
linkerExecutable
Override this property if permitted by linkerProvider.private java.lang.String
linkerFinalName
The name of the generated fileprivate java.lang.String
linkerFinalNameExt
The extension of the generated file.private java.util.List<java.lang.String>
linkerMiddleOptions
Additional linker command optionsprotected java.io.File
linkerOutputDirectory
Where to place the final packagingprivate java.lang.String
linkerProvider
Default value is ${compilerProvider}private java.lang.String
linkerSecondaryOutputExtensions
Comma separated extension type to be installed/deployed.private java.util.List<java.lang.String>
linkerStartOptions
Additional linker command optionsprivate java.util.List<java.lang.String>
linkingOrderLibs
Option to reorder dependency list, each item has the format of ${groupId}:${artifactId}private LinkerManager
manager
Internalprivate boolean
usingLinkerResponseFile
For project with lots of object files on windows, turn this flag to resolve Windows commandline length limit-
Fields inherited from class org.codehaus.mojo.natives.plugin.AbstractNativeMojo
dependencyIncludeDirectory, EMPTY_FILE_LIST, envFactoryManager, INCZIP_FOUND, INCZIP_TYPE, LINKER_INPUT_LIST_NAME, LINKER_OUTPUT_PATH, project, workingDirectory
-
-
Constructor Summary
Constructors Constructor Description NativeLinkMojo()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
attachPrimaryArtifact()
private void
attachSecondaryArtifacts()
private LinkerConfiguration
createLinkerConfiguration()
void
execute()
private java.util.List<java.lang.String>
getDependenciesFileOrderList()
convert dependencyLinkingOrders to a file listprivate java.io.File
getDependencyFile(org.apache.maven.artifact.Artifact artifact, boolean doCopy)
protected LinkerConfiguration
getLgetLinkerConfiguration()
private java.util.List<java.lang.String>
getLibFileNames()
private Linker
getLinker()
private org.apache.maven.artifact.Artifact
lookupDependencyUsingGroupArtifactIdPair(java.lang.String groupArtifactIdPair)
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 lookupprivate java.util.List<java.lang.String>
reorderLibDependencies(java.util.List<java.lang.String> libs)
-
Methods inherited from class org.codehaus.mojo.natives.plugin.AbstractNativeMojo
getAllCompilersOutputFileList, getEnvFactory, getProject, removeEmptyOptions, saveCompilerOutputFilePaths
-
-
-
-
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
-
config
private LinkerConfiguration config
For unit test only
-
-
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
-
getLgetLinkerConfiguration
protected LinkerConfiguration getLgetLinkerConfiguration()
-
-