For those of us using Maven and Flex, we need to get the Flex artifacts uploaded to a Maven repository. In my case, I have an Artifactory instance that can house corporate artifacts and third-party artifacts, and proxy artifacts available on the internet.
The Apache Flex project has a couple of SDK utilities that greatly help moving all the necessary artifacts into a Maven repository. Specifically:
- Apache Flex SDK Installer
- Apache Flex SDK Mavenizer
The Apache Flex SDK Installer is a download utility that will simplify pulling down Adobe AIR, Flex SDK, and Flash Player. After installing the installer, run it to select the versions that you want to download. For my case, I downloaded:
- Flex SDK 4.10.0
- AIR 3.8
- Flash Player 11.8
C:\temp\apache\flexsdk), checked all the the license agreements, and then clicked on Install.
The Apache Flex SDK Mavenizer seems to only be available in source-code form. It can be downloaded using either Subversion or Git:
Checkout (Subversion) or Clone (Git) the project, then build it using maven. For example:
C:\temp\apache\mavenizer> mvn package
The Apache Flex SDK Mavenizer has the following usage:
java -cp target/flex-sdk-converter-1.0.jar SDKGenerator "[sdkhome]" "[fdktarget]" false
sdkhomedirectory is structured like:
[sdkhome] +- air +- AdobeAIRSDK-[Airversion] +- flex +- flex_sdk_[Flexversion]
The Apache Flex SDK Installer downloads everything into one directory (
C:\temp\apache\flexsdk), but the Apache Flex SDK Mavenizer expects the AIR SDK and the Flex SDK to be in different directories. Rather than trying to dissect the AIR SDK from the Flex SDK, the easiest solution is to duplicate the one directory so that it fits the necessary structure. For example:
C:\temp\apache> mkdir sdkhome C:\temp\apache> mkdir sdkhome\air C:\temp\apache> mkdir sdkhome\flex C:\temp\apache> xcopy /s flexsdk sdkhome\air\AdobeAIRSDK-3.8\ C:\temp\apache> xcopy /s flexsdk sdkhome\flex\flex_sdk_4.10.0\
Next, create an empty target directory that will contain the artifacts in Maven format:
C:\temp\apache> mkdir fdktarget
Now you can run the SDK Generator step of the Apache Flex SDK Mavenizer:
Note that the last argument is
C:\temp\apache\mavenizer> java -cp target\flex-sdk-converter-1.0.jar SDKGenerator "C:\temp\apache\sdkhome" "C:\temp\apache\fdktarget\" false
falseas long as
flexmojos-maven-pluginwill be used; when
maven-flex-pluginis used, then
truewill be specified.
Feel free to inspect the results of
fdktarget. There are a lot of files -- too many to deploy manually to Artifactory. Luckily, the Apache Flex SDK Mavenizer utility has the SDK Deployer step that will upload these files to a repository. For example:
C:\temp\apache\mavenizer> java -cp target\flex-sdk-converter-1.0.jar SDKDeployer "C:\temp\apache\fdktarget\" flex-releases http://ArtifactoryHost/artifactory/third-party-releases-local/ "C:\apache-maven-3.0.4\bin\mvn.bat"
flex-releases refers to a
<server> entry in my Maven
settings.xml that contains credentials for Artifactory. For example:
<settings> <servers> <server> <id>flex-releases</id> <username>awhitford</username> <password>super-secret</password> </server> </servers> </settings>
There is a lot to upload, so be patient.