xcode:attach-version-info

Full name:

com.sap.prd.mobile.ios.mios:xcode-maven-plugin:1.14.5:attach-version-info

Description:

Generates a <artifact-id>-<version>-version.xml for reproducibility reasons. This versions.xml contains information about the scm location and revision of the built project and all its dependencies. Expects a sync.info file in the root folder of the project as input. The sync.info file is a property file. If used with perforce it must contain the following entries:
  • type=perforce
  • port=<The url of the perforce server>
  • depotpath=<The path synced on the perforce server>
  • changelist=<The changelist of the change that is being built>
If used with git it must contain the following entries:
  • type=git
  • repo=<The git repository>
  • commitId=<The commitId of the change that is being built>
For git based projects the sync.info file can be created with the following code snipped executed before the xcode-maven-plugin is triggered.
echo "type=git" > sync.info
echo "repo=scm:git:$(git remote -v |awk '/fetch/ {print $2;}')" >> sync.info
echo "commitId=$(git rev-parse HEAD)" >> sync.info

Attributes:

  • Requires a Maven project to be executed.
  • Requires dependency resolution of artifacts in scope: runtime.

Optional Parameters

Name Type Since Description
buildActions List - The Xcode build action to to execute (e.g. clean, build, install). By default clean and build are executed.
checkoutDirectory File - The original Xcode sources located in the src/xcode directory stay untouched during the whole Maven build. However, as we might have to modify the info.plist or the project itself we copy the whole Xcode source directory during the build into another "checkout" directory that by default named checkout and located below the Maven build ( target) directory.
codeSignIdentity String 1.2.0 The code sign identity is used to select the provisioning profile (e.g. iPhone Distribution, iPhone Developer).
codeSigningRequired boolean 1.14.1 The code signing required is used to disable code signing when no developer provisioning certificate is available (e.g. NO, YES).
Default value is: true.
configurations Set - The Xcode configurations that shall be built (e.g. Debug and Release). If no configuration is provided in the plugin's configuration section of the pom.xml it defaults to the values provided in the defaultAppConfigurations or defaultLibConfigurations parameters
defaultAppConfigurations String 1.2.0 Comma separated list of the default Xcode build configurations that should be built for apps (in contrast to libraries). These values only apply if no "configurations" are explicitly provided in the POM.
Default value is: Release,Debug.
defaultAppSdks String 1.2.0 Comma separated list of the default Xcode SDKs that should be used for apps (in contrast to libs). These values only apply if no "sdks" are explicitly provided in the POM.
Default value is: iphoneos,iphonesimulator.
defaultLibConfigurations String 1.2.0 Comma separated list of the default Xcode build configurations that should be built for libraries (in contrast to apps). These values only apply if no "configurations" are explicitly provided in the POM.
Default value is: Release,Debug.
defaultLibSdks String 1.2.0 Comma separated list of the default Xcode SDKs that should be used for libraries (in contrast to apps). These values only apply if no "sdks" are explicitly provided in the POM.
Default value is: iphoneos,iphonesimulator.
defaultxcconfig String 1.14.5 For simple application central team manages the xcconfig. This will be managed in settings.xml
failOnMissingSyncInfo boolean - If true the build fails if it does not find a sync.info file in the root directory
Default value is: false.
hideConfidentialInformation boolean - If true confidential information is removed from artifacts to be released.
Default value is: true.
noStrictVerify String - If true the codesign --verify will be called with --no-strict option
options Map 1.6.2 Options to pass to XCode - if any are explicitly defined here, this plugin will not provide default options to XCode.
productName String - (no description)
provisioningProfile String 1.2.1 Can be used to override the provisioning profile defined in the Xcode project target. You can set it to an empty String if you want to use the default provisioning profile.
sdks Set - Explicit lists of sdks (iphoneos,iphonesimulator) the Xcode project shall be built for. If no configuration is provided in the plugin's configuration section of the pom.xml it defaults to the values provided in the defaultAppSdks or defaultLibSdks parameters
settings Map 1.6.2 Settings to pass to XCode - if any are explicitly defined here, this plugin will not provide default settings to XCode.
symRootDir String 1.14.4 Allowed developers to override the SYMROOT settings
Default value is: build.
syncInfo String - (no description)
Default value is: sync.info.
target String 1.4.1 The Xcode target to be built. If not specified, the default target (the first target) will be built.
watchapp String 1.14.3 (no description)
xcconfigDir String 1.14.5 Allowed developers to override the xcconfig settings through pom.xml Signing methodology has been changed with xcode8 onwards, to enable this we are expecting dev to give singing related parameters This is only for the Apps with Entitlements like Push notification, Wallet etc...
xcodeCompileDirectory File - The xcode directory of the copied sources below the checkout directory.

Parameter Details

buildActions:

The Xcode build action to to execute (e.g. clean, build, install). By default clean and build are executed.
  • Type: java.util.List
  • Required: No

checkoutDirectory:

The original Xcode sources located in the src/xcode directory stay untouched during the whole Maven build. However, as we might have to modify the info.plist or the project itself we copy the whole Xcode source directory during the build into another "checkout" directory that by default named checkout and located below the Maven build ( target) directory.
  • Type: java.io.File
  • Required: No
  • Expression: ${xcode.checkoutDirectory}

codeSignIdentity:

The code sign identity is used to select the provisioning profile (e.g. iPhone Distribution, iPhone Developer).
  • Type: java.lang.String
  • Since: 1.2.0
  • Required: No
  • Expression: ${xcode.codeSignIdentity}

codeSigningRequired:

The code signing required is used to disable code signing when no developer provisioning certificate is available (e.g. NO, YES).
  • Type: boolean
  • Since: 1.14.1
  • Required: No
  • Expression: ${xcode.codeSigningRequired}
  • Default: true

configurations:

The Xcode configurations that shall be built (e.g. Debug and Release). If no configuration is provided in the plugin's configuration section of the pom.xml it defaults to the values provided in the defaultAppConfigurations or defaultLibConfigurations parameters
  • Type: java.util.Set
  • Required: No

defaultAppConfigurations:

Comma separated list of the default Xcode build configurations that should be built for apps (in contrast to libraries). These values only apply if no "configurations" are explicitly provided in the POM.
  • Type: java.lang.String
  • Since: 1.2.0
  • Required: No
  • Expression: ${xcode.app.defaultConfigurations}
  • Default: Release,Debug

defaultAppSdks:

Comma separated list of the default Xcode SDKs that should be used for apps (in contrast to libs). These values only apply if no "sdks" are explicitly provided in the POM.
  • Type: java.lang.String
  • Since: 1.2.0
  • Required: No
  • Expression: ${xcode.app.defaultSdks}
  • Default: iphoneos,iphonesimulator

defaultLibConfigurations:

Comma separated list of the default Xcode build configurations that should be built for libraries (in contrast to apps). These values only apply if no "configurations" are explicitly provided in the POM.
  • Type: java.lang.String
  • Since: 1.2.0
  • Required: No
  • Expression: ${xcode.lib.defaultConfigurations}
  • Default: Release,Debug

defaultLibSdks:

Comma separated list of the default Xcode SDKs that should be used for libraries (in contrast to apps). These values only apply if no "sdks" are explicitly provided in the POM.
  • Type: java.lang.String
  • Since: 1.2.0
  • Required: No
  • Expression: ${xcode.lib.defaultSdks}
  • Default: iphoneos,iphonesimulator

defaultxcconfig:

For simple application central team manages the xcconfig. This will be managed in settings.xml
  • Type: java.lang.String
  • Since: 1.14.5
  • Required: No
  • Expression: ${xcode.xcconfig.default}

failOnMissingSyncInfo:

If true the build fails if it does not find a sync.info file in the root directory
  • Type: boolean
  • Required: No
  • Expression: ${xcode.failOnMissingSyncInfo}
  • Default: false

hideConfidentialInformation:

If true confidential information is removed from artifacts to be released.
  • Type: boolean
  • Required: No
  • Expression: ${xcode.hideConfidentialInformation}
  • Default: true

noStrictVerify:

If true the codesign --verify will be called with --no-strict option
  • Type: java.lang.String
  • Required: No
  • Expression: ${xcode.noStrictVerify}

options:

Options to pass to XCode - if any are explicitly defined here, this plugin will not provide default options to XCode.
  • Type: java.util.Map
  • Since: 1.6.2
  • Required: No

productName:

(no description)
  • Type: java.lang.String
  • Required: No
  • Expression: ${product.name}

provisioningProfile:

Can be used to override the provisioning profile defined in the Xcode project target. You can set it to an empty String if you want to use the default provisioning profile.
  • Type: java.lang.String
  • Since: 1.2.1
  • Required: No
  • Expression: ${xcode.provisioningProfile}

sdks:

Explicit lists of sdks (iphoneos,iphonesimulator) the Xcode project shall be built for. If no configuration is provided in the plugin's configuration section of the pom.xml it defaults to the values provided in the defaultAppSdks or defaultLibSdks parameters
  • Type: java.util.Set
  • Required: No

settings:

Settings to pass to XCode - if any are explicitly defined here, this plugin will not provide default settings to XCode.
  • Type: java.util.Map
  • Since: 1.6.2
  • Required: No

symRootDir:

Allowed developers to override the SYMROOT settings
  • Type: java.lang.String
  • Since: 1.14.4
  • Required: No
  • Expression: ${xcode.symroot}
  • Default: build

syncInfo:

(no description)
  • Type: java.lang.String
  • Required: No
  • Expression: ${sync.info.file}
  • Default: sync.info

target:

The Xcode target to be built. If not specified, the default target (the first target) will be built.
  • Type: java.lang.String
  • Since: 1.4.1
  • Required: No
  • Expression: ${xcode.target}

watchapp:

(no description)
  • Type: java.lang.String
  • Since: 1.14.3
  • Required: No
  • Expression: ${xcode.watchapp}

xcconfigDir:

Allowed developers to override the xcconfig settings through pom.xml Signing methodology has been changed with xcode8 onwards, to enable this we are expecting dev to give singing related parameters This is only for the Apps with Entitlements like Push notification, Wallet etc...
  • Type: java.lang.String
  • Since: 1.14.5
  • Required: No
  • Expression: ${xcode.xcconfig}

xcodeCompileDirectory:

The xcode directory of the copied sources below the checkout directory.
  • Type: java.io.File
  • Required: No
  • Expression: ${xcode.compileDirectory}