How to add project dependencies to specific platform targets created by the `kotlin-multiplatform` plugin?Can I load resources from a Kotlin common module (multiplatform project)Kotlin multiplatform projects run common module test in IDEAHow to configure JUnit 5 in a Kotlin multiplatform project using Gradle and IntelliJ?How to add dependency to kotlin multiplatform projects with single build.gradle configurationHow to migrate from Kotlin 1.2 to 1.3 with the kotlin-dsl Gradle plugin?Reference kotlin-js resources from kotlin-jvm in Kotlin 1.3 multiplatform gradle projectHow to compile large map in Kotlin for JVM or multiplatform?Kotlin Multiplatform Library Project Upload Issue - POM Multiple ArtifactsHow to add default `jvm` sourceSet to `android` target in Kotlin Multiplatform?Is it possible to create a kotlin multiplatform project referencing the correct target of a common module?
creating a ":KeepCursor" command
Why is so much work done on numerical verification of the Riemann Hypothesis?
Mixing PEX brands
How could a planet have erratic days?
What are the advantages of simplicial model categories over non-simplicial ones?
Is this toilet slogan correct usage of the English language?
Why does the Sun have different day lengths, but not the gas giants?
Why can Carol Danvers change her suit colours in the first place?
Why is the "ls" command showing permissions of files in a FAT32 partition?
Using substitution ciphers to generate new alphabets in a novel
Invalid date error by date command
Can disgust be a key component of horror?
Terse Method to Swap Lowest for Highest?
How to say when an application is taking the half of your screen on a computer
What are the balance implications behind making invisible things auto-hide?
Pre-mixing cryogenic fuels and using only one fuel tank
Why would a new[] expression ever invoke a destructor?
putting logo on same line but after title, latex
How do you make your own symbol when Detexify fails?
Are Captain Marvel's powers affected by Thanos' actions in Infinity War
Quoting Keynes in a lecture
Does the Linux kernel need a file system to run?
Is there a way to get `mathscr' with lower case letters in pdfLaTeX?
Does an advisor owe his/her student anything? Will an advisor keep a PhD student only out of pity?
How to add project dependencies to specific platform targets created by the `kotlin-multiplatform` plugin?
Can I load resources from a Kotlin common module (multiplatform project)Kotlin multiplatform projects run common module test in IDEAHow to configure JUnit 5 in a Kotlin multiplatform project using Gradle and IntelliJ?How to add dependency to kotlin multiplatform projects with single build.gradle configurationHow to migrate from Kotlin 1.2 to 1.3 with the kotlin-dsl Gradle plugin?Reference kotlin-js resources from kotlin-jvm in Kotlin 1.3 multiplatform gradle projectHow to compile large map in Kotlin for JVM or multiplatform?Kotlin Multiplatform Library Project Upload Issue - POM Multiple ArtifactsHow to add default `jvm` sourceSet to `android` target in Kotlin Multiplatform?Is it possible to create a kotlin multiplatform project referencing the correct target of a common module?
Previously, building multiplatform projects using Gradle relied on separate Gradle plugins per targeted platform: kotlin-platform-common
, kotlin-platform-js
, and kotlin-platform-jvm
.
Starting from Kotlin 1.3, this is now unified using one kotlin-multiplatform
plugin. The current documentation specifies how to set up multiplatform projects using this approach.
However, in my project I have multiple multiplatform projects with some dependencies between them. With the old multiplatform configuration, each different platform is a separate module and adding dependencies between projects required adding project references in each platform-specific module to corresponding modules in the other project: e.g., project(':some-library:some-library-js')
to add a dependency to the JS module from within another JS module.
While migrating to the new multiplatform configuration, I now need to add a dependency from a project configured using the old configuration method to a project configured using the new kotlin-multiplatform
plugin.
Given that platform-specific modules are now specified and managed by the new plugin, how do I go about this?
gradle kotlin kotlin-multiplatform
add a comment |
Previously, building multiplatform projects using Gradle relied on separate Gradle plugins per targeted platform: kotlin-platform-common
, kotlin-platform-js
, and kotlin-platform-jvm
.
Starting from Kotlin 1.3, this is now unified using one kotlin-multiplatform
plugin. The current documentation specifies how to set up multiplatform projects using this approach.
However, in my project I have multiple multiplatform projects with some dependencies between them. With the old multiplatform configuration, each different platform is a separate module and adding dependencies between projects required adding project references in each platform-specific module to corresponding modules in the other project: e.g., project(':some-library:some-library-js')
to add a dependency to the JS module from within another JS module.
While migrating to the new multiplatform configuration, I now need to add a dependency from a project configured using the old configuration method to a project configured using the new kotlin-multiplatform
plugin.
Given that platform-specific modules are now specified and managed by the new plugin, how do I go about this?
gradle kotlin kotlin-multiplatform
add a comment |
Previously, building multiplatform projects using Gradle relied on separate Gradle plugins per targeted platform: kotlin-platform-common
, kotlin-platform-js
, and kotlin-platform-jvm
.
Starting from Kotlin 1.3, this is now unified using one kotlin-multiplatform
plugin. The current documentation specifies how to set up multiplatform projects using this approach.
However, in my project I have multiple multiplatform projects with some dependencies between them. With the old multiplatform configuration, each different platform is a separate module and adding dependencies between projects required adding project references in each platform-specific module to corresponding modules in the other project: e.g., project(':some-library:some-library-js')
to add a dependency to the JS module from within another JS module.
While migrating to the new multiplatform configuration, I now need to add a dependency from a project configured using the old configuration method to a project configured using the new kotlin-multiplatform
plugin.
Given that platform-specific modules are now specified and managed by the new plugin, how do I go about this?
gradle kotlin kotlin-multiplatform
Previously, building multiplatform projects using Gradle relied on separate Gradle plugins per targeted platform: kotlin-platform-common
, kotlin-platform-js
, and kotlin-platform-jvm
.
Starting from Kotlin 1.3, this is now unified using one kotlin-multiplatform
plugin. The current documentation specifies how to set up multiplatform projects using this approach.
However, in my project I have multiple multiplatform projects with some dependencies between them. With the old multiplatform configuration, each different platform is a separate module and adding dependencies between projects required adding project references in each platform-specific module to corresponding modules in the other project: e.g., project(':some-library:some-library-js')
to add a dependency to the JS module from within another JS module.
While migrating to the new multiplatform configuration, I now need to add a dependency from a project configured using the old configuration method to a project configured using the new kotlin-multiplatform
plugin.
Given that platform-specific modules are now specified and managed by the new plugin, how do I go about this?
gradle kotlin kotlin-multiplatform
gradle kotlin kotlin-multiplatform
asked yesterday
Steven JeurisSteven Jeuris
9,274543107
9,274543107
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Basically, you don't need to specify the platform in project-to-project dependencies involving Kotlin Muiltiplatform projects. The Kotlin plugin sets up dependency resolution in a way that Gradle will choose the appropriate target's artifacts automatically.
So, for example, in a Kotlin/JVM single-target project, you can just use a project("...")
dependency on a Multiplatform project:
dependencies
implementation(project(":multiplatform-library")
If :multiplatform-library
has a JVM target, this dependency will get resolved to the JVM target's artifact. Otherwise, you will encounter a dependency resolution failure with candidate configurartions listed.
This is described in the Kotlin reference, Building Multiplatform Projects with Gradle – Adding Dependencies, but is applicable to single-platform projects, too:
<...> a
project('...')
dependency on another multiplatform project is resolved to an appropriate target automatically. It is enough to specify a singleproject('...')
dependency in a source set's dependencies, and the compilations that include the source set will receive a corresponding platform-specific artifact of that project, given that it has a compatible target.
If this does not happen for you, please post the specific dependency resolution failure log, or file an issue at https://kotl.in/issue.
When you say, "The Kotlin plugin", do you meankotlin-multiplatform
? My question was, what if from a project using the old platform-specific plugins (e.g.,kotlin-platform-js
) you need to reference a project which is set up usingkotlin-multiplatform
? I understood that once fully upgraded tokotlin-multiplatform
for all projects, what you mention works (and in fact, that is what I have now). But, in between, I wanted to be able to compile to see whether everything worked correctly, as not to have to upgrade all projects at once.
– Steven Jeuris
yesterday
Thekotlin-multiplatform
plugin shares a lot of code with the single platform plugins, and yes, this dependency resolution setup should be valid for those plugins, too.
– hotkey
yesterday
Just tried this by checking out an old version. Fails with "Cannot choose between the following variants of project :multiplatform-library" ... followed by a long list of all variants (jsCompile, jsCompileOnly, jsDefault, jsRuntime, jsRuntimeElements, ...). Specifying the configuration variant manually as in my answer does work.
– Steven Jeuris
yesterday
add a comment |
I'm not certain whether the following approach is the recommended method, or I overlooked any potential issues, but my projects compile and all tests pass.
In Gradle, you can add dependencies to specific project configurations:
dependencies
implementation project(path: ':some-library', configuration: 'configName')
By trial and error I figured out that specifying the following configuration dependencies per platform module type works:
- common:
configuration: 'archives'
. Without this, Gradle configuration fails as code dependencies are not found.
Without the following, compilation fails:
- jvm:
configuration: 'jvmDefault'
- js:
configuration: 'jsDefault'
For example, for the JS module as specified in the question:
dependencies
implementation project(path: ':some-library', configuration: 'jsDefault')
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55280650%2fhow-to-add-project-dependencies-to-specific-platform-targets-created-by-the-kot%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Basically, you don't need to specify the platform in project-to-project dependencies involving Kotlin Muiltiplatform projects. The Kotlin plugin sets up dependency resolution in a way that Gradle will choose the appropriate target's artifacts automatically.
So, for example, in a Kotlin/JVM single-target project, you can just use a project("...")
dependency on a Multiplatform project:
dependencies
implementation(project(":multiplatform-library")
If :multiplatform-library
has a JVM target, this dependency will get resolved to the JVM target's artifact. Otherwise, you will encounter a dependency resolution failure with candidate configurartions listed.
This is described in the Kotlin reference, Building Multiplatform Projects with Gradle – Adding Dependencies, but is applicable to single-platform projects, too:
<...> a
project('...')
dependency on another multiplatform project is resolved to an appropriate target automatically. It is enough to specify a singleproject('...')
dependency in a source set's dependencies, and the compilations that include the source set will receive a corresponding platform-specific artifact of that project, given that it has a compatible target.
If this does not happen for you, please post the specific dependency resolution failure log, or file an issue at https://kotl.in/issue.
When you say, "The Kotlin plugin", do you meankotlin-multiplatform
? My question was, what if from a project using the old platform-specific plugins (e.g.,kotlin-platform-js
) you need to reference a project which is set up usingkotlin-multiplatform
? I understood that once fully upgraded tokotlin-multiplatform
for all projects, what you mention works (and in fact, that is what I have now). But, in between, I wanted to be able to compile to see whether everything worked correctly, as not to have to upgrade all projects at once.
– Steven Jeuris
yesterday
Thekotlin-multiplatform
plugin shares a lot of code with the single platform plugins, and yes, this dependency resolution setup should be valid for those plugins, too.
– hotkey
yesterday
Just tried this by checking out an old version. Fails with "Cannot choose between the following variants of project :multiplatform-library" ... followed by a long list of all variants (jsCompile, jsCompileOnly, jsDefault, jsRuntime, jsRuntimeElements, ...). Specifying the configuration variant manually as in my answer does work.
– Steven Jeuris
yesterday
add a comment |
Basically, you don't need to specify the platform in project-to-project dependencies involving Kotlin Muiltiplatform projects. The Kotlin plugin sets up dependency resolution in a way that Gradle will choose the appropriate target's artifacts automatically.
So, for example, in a Kotlin/JVM single-target project, you can just use a project("...")
dependency on a Multiplatform project:
dependencies
implementation(project(":multiplatform-library")
If :multiplatform-library
has a JVM target, this dependency will get resolved to the JVM target's artifact. Otherwise, you will encounter a dependency resolution failure with candidate configurartions listed.
This is described in the Kotlin reference, Building Multiplatform Projects with Gradle – Adding Dependencies, but is applicable to single-platform projects, too:
<...> a
project('...')
dependency on another multiplatform project is resolved to an appropriate target automatically. It is enough to specify a singleproject('...')
dependency in a source set's dependencies, and the compilations that include the source set will receive a corresponding platform-specific artifact of that project, given that it has a compatible target.
If this does not happen for you, please post the specific dependency resolution failure log, or file an issue at https://kotl.in/issue.
When you say, "The Kotlin plugin", do you meankotlin-multiplatform
? My question was, what if from a project using the old platform-specific plugins (e.g.,kotlin-platform-js
) you need to reference a project which is set up usingkotlin-multiplatform
? I understood that once fully upgraded tokotlin-multiplatform
for all projects, what you mention works (and in fact, that is what I have now). But, in between, I wanted to be able to compile to see whether everything worked correctly, as not to have to upgrade all projects at once.
– Steven Jeuris
yesterday
Thekotlin-multiplatform
plugin shares a lot of code with the single platform plugins, and yes, this dependency resolution setup should be valid for those plugins, too.
– hotkey
yesterday
Just tried this by checking out an old version. Fails with "Cannot choose between the following variants of project :multiplatform-library" ... followed by a long list of all variants (jsCompile, jsCompileOnly, jsDefault, jsRuntime, jsRuntimeElements, ...). Specifying the configuration variant manually as in my answer does work.
– Steven Jeuris
yesterday
add a comment |
Basically, you don't need to specify the platform in project-to-project dependencies involving Kotlin Muiltiplatform projects. The Kotlin plugin sets up dependency resolution in a way that Gradle will choose the appropriate target's artifacts automatically.
So, for example, in a Kotlin/JVM single-target project, you can just use a project("...")
dependency on a Multiplatform project:
dependencies
implementation(project(":multiplatform-library")
If :multiplatform-library
has a JVM target, this dependency will get resolved to the JVM target's artifact. Otherwise, you will encounter a dependency resolution failure with candidate configurartions listed.
This is described in the Kotlin reference, Building Multiplatform Projects with Gradle – Adding Dependencies, but is applicable to single-platform projects, too:
<...> a
project('...')
dependency on another multiplatform project is resolved to an appropriate target automatically. It is enough to specify a singleproject('...')
dependency in a source set's dependencies, and the compilations that include the source set will receive a corresponding platform-specific artifact of that project, given that it has a compatible target.
If this does not happen for you, please post the specific dependency resolution failure log, or file an issue at https://kotl.in/issue.
Basically, you don't need to specify the platform in project-to-project dependencies involving Kotlin Muiltiplatform projects. The Kotlin plugin sets up dependency resolution in a way that Gradle will choose the appropriate target's artifacts automatically.
So, for example, in a Kotlin/JVM single-target project, you can just use a project("...")
dependency on a Multiplatform project:
dependencies
implementation(project(":multiplatform-library")
If :multiplatform-library
has a JVM target, this dependency will get resolved to the JVM target's artifact. Otherwise, you will encounter a dependency resolution failure with candidate configurartions listed.
This is described in the Kotlin reference, Building Multiplatform Projects with Gradle – Adding Dependencies, but is applicable to single-platform projects, too:
<...> a
project('...')
dependency on another multiplatform project is resolved to an appropriate target automatically. It is enough to specify a singleproject('...')
dependency in a source set's dependencies, and the compilations that include the source set will receive a corresponding platform-specific artifact of that project, given that it has a compatible target.
If this does not happen for you, please post the specific dependency resolution failure log, or file an issue at https://kotl.in/issue.
answered yesterday
hotkeyhotkey
65.4k14187205
65.4k14187205
When you say, "The Kotlin plugin", do you meankotlin-multiplatform
? My question was, what if from a project using the old platform-specific plugins (e.g.,kotlin-platform-js
) you need to reference a project which is set up usingkotlin-multiplatform
? I understood that once fully upgraded tokotlin-multiplatform
for all projects, what you mention works (and in fact, that is what I have now). But, in between, I wanted to be able to compile to see whether everything worked correctly, as not to have to upgrade all projects at once.
– Steven Jeuris
yesterday
Thekotlin-multiplatform
plugin shares a lot of code with the single platform plugins, and yes, this dependency resolution setup should be valid for those plugins, too.
– hotkey
yesterday
Just tried this by checking out an old version. Fails with "Cannot choose between the following variants of project :multiplatform-library" ... followed by a long list of all variants (jsCompile, jsCompileOnly, jsDefault, jsRuntime, jsRuntimeElements, ...). Specifying the configuration variant manually as in my answer does work.
– Steven Jeuris
yesterday
add a comment |
When you say, "The Kotlin plugin", do you meankotlin-multiplatform
? My question was, what if from a project using the old platform-specific plugins (e.g.,kotlin-platform-js
) you need to reference a project which is set up usingkotlin-multiplatform
? I understood that once fully upgraded tokotlin-multiplatform
for all projects, what you mention works (and in fact, that is what I have now). But, in between, I wanted to be able to compile to see whether everything worked correctly, as not to have to upgrade all projects at once.
– Steven Jeuris
yesterday
Thekotlin-multiplatform
plugin shares a lot of code with the single platform plugins, and yes, this dependency resolution setup should be valid for those plugins, too.
– hotkey
yesterday
Just tried this by checking out an old version. Fails with "Cannot choose between the following variants of project :multiplatform-library" ... followed by a long list of all variants (jsCompile, jsCompileOnly, jsDefault, jsRuntime, jsRuntimeElements, ...). Specifying the configuration variant manually as in my answer does work.
– Steven Jeuris
yesterday
When you say, "The Kotlin plugin", do you mean
kotlin-multiplatform
? My question was, what if from a project using the old platform-specific plugins (e.g., kotlin-platform-js
) you need to reference a project which is set up using kotlin-multiplatform
? I understood that once fully upgraded to kotlin-multiplatform
for all projects, what you mention works (and in fact, that is what I have now). But, in between, I wanted to be able to compile to see whether everything worked correctly, as not to have to upgrade all projects at once.– Steven Jeuris
yesterday
When you say, "The Kotlin plugin", do you mean
kotlin-multiplatform
? My question was, what if from a project using the old platform-specific plugins (e.g., kotlin-platform-js
) you need to reference a project which is set up using kotlin-multiplatform
? I understood that once fully upgraded to kotlin-multiplatform
for all projects, what you mention works (and in fact, that is what I have now). But, in between, I wanted to be able to compile to see whether everything worked correctly, as not to have to upgrade all projects at once.– Steven Jeuris
yesterday
The
kotlin-multiplatform
plugin shares a lot of code with the single platform plugins, and yes, this dependency resolution setup should be valid for those plugins, too.– hotkey
yesterday
The
kotlin-multiplatform
plugin shares a lot of code with the single platform plugins, and yes, this dependency resolution setup should be valid for those plugins, too.– hotkey
yesterday
Just tried this by checking out an old version. Fails with "Cannot choose between the following variants of project :multiplatform-library" ... followed by a long list of all variants (jsCompile, jsCompileOnly, jsDefault, jsRuntime, jsRuntimeElements, ...). Specifying the configuration variant manually as in my answer does work.
– Steven Jeuris
yesterday
Just tried this by checking out an old version. Fails with "Cannot choose between the following variants of project :multiplatform-library" ... followed by a long list of all variants (jsCompile, jsCompileOnly, jsDefault, jsRuntime, jsRuntimeElements, ...). Specifying the configuration variant manually as in my answer does work.
– Steven Jeuris
yesterday
add a comment |
I'm not certain whether the following approach is the recommended method, or I overlooked any potential issues, but my projects compile and all tests pass.
In Gradle, you can add dependencies to specific project configurations:
dependencies
implementation project(path: ':some-library', configuration: 'configName')
By trial and error I figured out that specifying the following configuration dependencies per platform module type works:
- common:
configuration: 'archives'
. Without this, Gradle configuration fails as code dependencies are not found.
Without the following, compilation fails:
- jvm:
configuration: 'jvmDefault'
- js:
configuration: 'jsDefault'
For example, for the JS module as specified in the question:
dependencies
implementation project(path: ':some-library', configuration: 'jsDefault')
add a comment |
I'm not certain whether the following approach is the recommended method, or I overlooked any potential issues, but my projects compile and all tests pass.
In Gradle, you can add dependencies to specific project configurations:
dependencies
implementation project(path: ':some-library', configuration: 'configName')
By trial and error I figured out that specifying the following configuration dependencies per platform module type works:
- common:
configuration: 'archives'
. Without this, Gradle configuration fails as code dependencies are not found.
Without the following, compilation fails:
- jvm:
configuration: 'jvmDefault'
- js:
configuration: 'jsDefault'
For example, for the JS module as specified in the question:
dependencies
implementation project(path: ':some-library', configuration: 'jsDefault')
add a comment |
I'm not certain whether the following approach is the recommended method, or I overlooked any potential issues, but my projects compile and all tests pass.
In Gradle, you can add dependencies to specific project configurations:
dependencies
implementation project(path: ':some-library', configuration: 'configName')
By trial and error I figured out that specifying the following configuration dependencies per platform module type works:
- common:
configuration: 'archives'
. Without this, Gradle configuration fails as code dependencies are not found.
Without the following, compilation fails:
- jvm:
configuration: 'jvmDefault'
- js:
configuration: 'jsDefault'
For example, for the JS module as specified in the question:
dependencies
implementation project(path: ':some-library', configuration: 'jsDefault')
I'm not certain whether the following approach is the recommended method, or I overlooked any potential issues, but my projects compile and all tests pass.
In Gradle, you can add dependencies to specific project configurations:
dependencies
implementation project(path: ':some-library', configuration: 'configName')
By trial and error I figured out that specifying the following configuration dependencies per platform module type works:
- common:
configuration: 'archives'
. Without this, Gradle configuration fails as code dependencies are not found.
Without the following, compilation fails:
- jvm:
configuration: 'jvmDefault'
- js:
configuration: 'jsDefault'
For example, for the JS module as specified in the question:
dependencies
implementation project(path: ':some-library', configuration: 'jsDefault')
edited yesterday
answered yesterday
Steven JeurisSteven Jeuris
9,274543107
9,274543107
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55280650%2fhow-to-add-project-dependencies-to-specific-platform-targets-created-by-the-kot%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown